1.本发明公开一种方法,涉及分布式数据库系统技术领域,具体地说是一种分布式数据库提升数据路由效率的方法。
背景技术:2.分布式数据库系统通常在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上,其主要设计目标是可扩展,强一致和高可靠。数据库中的数据分别在不同的局部数据库中存储、由不同的数据库管理系统进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起。
3.为了使集群中的所有数据都可以从任何节点访问,将数据存储在kv对的整体有序map中。集群集中所有range的位置都存储在keyspace开头的两级索引中,称为meta range,其中第一级(meta1)寻址第二级,第二级(meta2)索引集群中的用户数据。meta range被视为正常range,并且可以像集群的kv数据的其他元素一样进行访问和复制,每个节点都有关于meta1 range的位置信息,并且该range从不分割,而meta2 range可能位于集群的某几个节点中。当节点收到sql请求时,它会首先查看meta1 range确定key属于哪个meta2range的范围,通过将请求中的key与其meta2 range内的key进行比较,找出将请求路由到哪个节点。随后该请求被发送到给节点完成相关操作。由此可知,每次完成请求都需要从存储介质中查找meta range来确定路由节点,当集群压力较大时,该操作响应时间可能会很长,影响数据库读写效率。
技术实现要素:4.本发明针对现有技术的问题,提供一种分布式数据库提升数据路由效率的方法,提升分布式数据库集群数据路由效率。
5.本发明提出的具体方案是:
6.一种分布式数据库提升数据路由效率的方法,基于shared nothing架构的分布式数据库集群,增加路由缓存,通过查找路由缓中获得range元数据信息将接入节点收到的数据请求根据元数据信息路由到适当的节点完成操作,
7.并通过数据同步协议将每个节点的range元数据信息同步到整个集群,根据更新规则将range元数据信息更新到路由缓存中。
8.进一步,所述的一种分布式数据库提升数据路由效率的方法中所述路由缓存存储用于标识数据范围的keyspace和节点的range元数据信息。
9.进一步,所述的一种分布式数据库提升数据路由效率的方法中所述通过查找路由缓中获得range元数据信息之前,包括:
10.遍历路由缓存查找是否存在相应的range元数据信息的缓存数据,若存在则后续将数据请求发送到对应节点完成操作,若不存在则从存储介质中查找相应的keyspace范围和节点的range元数据信息更新至路由缓存中。
11.进一步,所述的一种分布式数据库提升数据路由效率的方法中所述增加路由缓存,包括:
12.设置路由缓存的容量,并根据最近最少使用原则删除最少使用的缓存数据。
13.进一步,所述的一种分布式数据库提升数据路由效率的方法中所述range元数据信息通过键值对kv map存储,并且每条range元数据信息都存在时间戳。
14.进一步,所述的一种分布式数据库提升数据路由效率的方法中所述更新规则包括:
15.根据range元数据信息的起始key读取路由缓存,判断对应的range元数据信息是否存在,
16.若存在但是range元数据信息的时间戳比路由缓存更新,则将此时range元数据信息更新到路由缓存中。
17.本发明还提供一种分布式数据库提升数据路由效率的系统,包括路由缓存模块和更新模块,
18.路由缓存模块基于shared nothing架构的分布式数据库集群,增加路由缓存,通过查找路由缓中获得range元数据信息将接入节点收到的数据请求根据元数据信息路由到适当的节点完成操作,
19.更新模块通过数据同步协议将每个节点的range元数据信息同步到整个集群,根据更新规则将range元数据信息更新到路由缓存中。
20.本发明还提供一种分布式数据库提升数据路由效率的装置,包括至少一个存储器和至少一个处理器;
21.所述至少一个存储器,用于存储机器可读程序;
22.所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种分布式数据库提升数据路由效率的方法。
23.本发明的有益之处是:
24.本发明公开了一种分布式数据库提升数据路由效率的方法,在shared nothing架构的分布式数据库集群内将接入节点收到数据请求通过路由缓存获得元数据信息将请求路由到适当的节点来完成操作,避免每次数据路由都从存储介质中查找造成的响应时间冗长和系统资源消耗,同时通过数据同步协议将每个节点的range元数据扩散到整个集群,根据更新规则将range元数据更新到路由缓存中,从而提升数据路由效率。
附图说明
25.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1是本发明方法流程示意图。
具体实施方式
27.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以
更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
28.本发明提供一种分布式数据库提升数据路由效率的方法,基于shared nothing架构的分布式数据库集群,增加路由缓存,通过查找路由缓中获得range元数据信息将接入节点收到的数据请求根据元数据信息路由到适当的节点完成操作,
29.并通过数据同步协议将每个节点的range元数据信息同步到整个集群,根据更新规则将range元数据信息更新到路由缓存中。
30.本发明方法增加路由缓存,该缓存保存着一部分从存储介质中最近被读出的对应节点元数据信息,每次数据请求发起路由时先遍历路由缓存,如果缓存已有该信息则直接完成数据路由。其次通过数据同步协议将集群内各个节点拥有的range元数据同步到整个集群内,这样每个节点都可以知晓整个集群的所有range元数据。当节点收到range元数据后会根据一定的更新规则进行对比决定是否更新到路由缓存,由此提高路由缓存效率。
31.实际应用中,shared nothing架构是一种常见的分布式数据库架构。这种架构中的每一个节点都是独立、自给的,而且整个系统中没有单点竞争。每个节点都有自己私有的cpu、内存、硬盘等,不存在共享资源,各处理单元之间通过协议通信,并行处理和扩展能力更好。各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。
32.分布式数据库系统中的每台存储服务器称为节点,每个节点包含一个或多个store,每个store独享一块磁盘,每个store对应一个存储实例。系统将用户数据组织成有序的key-value键值对形成一个kv map,kv map逻辑上按照范围被切分成大量的key空间,每个key空间称为range,每个store包含一批range。
33.为了使集群中的所有数据都可以从任何节点访问,将数据存储在kv对的整体有序map中。群集中所有range的位置都存储在keyspace开头的两级索引中,称为meta range,其中第一级(meta1)寻址第二级,第二级(meta2)索引集群中的用户数据。meta range被视为正常range,并且可以像集群的kv数据的其他元素一样进行访问和复制,每个节点都有关于meta1 range的位置信息,并且该range从不分割,而meta2 range可能位于集群的某几个节点中。当节点收到sql请求时,它会首先查看meta1 range确定key属于哪个meta2 range的范围,通过将请求中的key与其meta2 range内的key进行比较,找出将请求路由到哪个节点。随后该请求被发送到给节点完成相关操作。由此可知,每次完成请求都需要从存储介质中查找meta range来确定路由节点,当集群压力较大时,该操作响应时间可能会很长,影响数据库读写效率。
34.而在本发明方法的一些实施例中,增加路由缓存,存储着用于标识数据范围的keyspace和range元数据信息,range元数据信息通过一个统一的键值对kv map来存储,除了存储元数据信息,还需要为每条数据增加时间戳,时间戳用来判断该条数据是否需要被同步。
35.所述路由缓存在节点启动时为空,当节点启动完成开始提供服务后逐步添加缓存条目,节点下线或断电后被清空。收到第一条业务请求时,该请求首先遍历路由缓存查找是否有满足其所处理的数据key范围要求的缓存数据,此时由于缓存为空会查找失败,则开始一次从存储介质中查找meta range的流程,查找成功后此次请求发送到对应节点完成操作,查找成功的meta range中的keyspace范围和节点元数据信息则被更新到路由缓存中,
之后如果有符合keyspace范围的请求再次发起路由时直接通过路由缓存查找并发送到相应节点执行。当其他请求的key不在该缓存范围中时,则重复之前的操作从存储介质中查找meta range完成路由然后将其更新到路由缓存。
36.上述过程中,考虑到集群用户数据规模较大时meta range也会随之规模较大,如果将range元数据全部存入路由缓存占用内存空间太大,并且遍历效率不高,则设置有限容量的路由缓存,并采用最近最少使用原则删除最少使用的缓存,将最新使用的meta range条目更新到缓存中。
37.当集群节点通过数据同步协议收到range元数据信息同步数据时,根据range元数据信息的起始key读取路由缓存,判断对应的range元数据信息是否存在,若存在但是range元数据信息的时间戳比路由缓存更新,则将此时range元数据信息更新到路由缓存中的更新原则进行路由缓存的更新。
38.利用上述过程,进行相同的服务器上分别部署提升路由效率前后的分布式数据库对比,在一台72核384g内存的服务器上启动100个节点,优化前cpu利用率在35%-40%左右。采用优化后的方案后,集群平稳后的cpu利用率为10%-15%,系统cpu资源消耗得到了极大的改善。
39.通过在5台服务器上搭建共250节点大规模的集群对比测试发现,优化方案下集群运行时服务器平均cpu利用率为13%,优化前的平均cpu利用率为38%。向集群中插入10000仓2tb的数据后,运行tpcc测试通过对比tpmc值来衡量集群的性能发现,本发明方案的tpmc值在81000左右,而优化前方案下仅为37000左右,进一步证明本发明方案可以提升数据路由效率,节省系统资源。
40.此外集群节点通过数据同步协议同步range元数据信息的过程,可参考如下:
41.分布式数据库系统的节点启动时会指定该节点的ip地址以及端口号,这两个地址构成了一个独一无二的网络地址以标识该节点。节点启动后会指定连接一个当前集群内的其他节点地址,这样本节点充客户端角色,被连接的节点充当服务端角色,两者通过远程过程调用的方式建立双向连接流。当客户端的kv map新插入range元数据时,触发客户端遍历当前的kv map根据时间戳从中取出最新未同步的数据发送给服务端,当服务端收到该元数据后存入自身的kv map,同时遍历kv map将自身未同步的数据返回给客户端,这样完成一次数据的同步。为了加快数据的同步速度,服务端在没有收到客户端请求时,也会监听自己的kv map的变化,当发生变化时将未更新的元数据主动同步给客户端。
42.当第三个节点加入集群时,通常它会选择连接当前的某个服务端,这时一个服务端会对应两个客户端。客户端分别把自身range元数据信息发送给服务端,再被服务端同步到另一个客户端,达到range元数据同步到整个集群的目的。随着更多节点的加入,一个服务端连接的客户端会不断增多,为了保证服务端的同步效率,需要限制服务端可连接的客户端数目。客户端数目达到上限后再收到新增结点客户端的连接请求,服务端会从已连接的客户端中随机选取一个返回给发起连接的节点,该节点会连接收到的应答中的节点地址作为自己的服务端。这样一个节点可能既是服务端又是客户端,客户端和服务端之间不断交互元数据信息,将自身拥有的最新元数据以增量的方式不断同步出去,最终集群内所有节点都会拥有所有的range元数据信息,且每个节点都是完全相同的。
43.同时本发明还提供一种分布式数据库提升数据路由效率的系统,包括路由缓存模
块和更新模块,
44.路由缓存模块基于shared nothing架构的分布式数据库集群,增加路由缓存,通过查找路由缓中获得range元数据信息将接入节点收到的数据请求根据元数据信息路由到适当的节点完成操作,
45.更新模块通过数据同步协议将每个节点的range元数据信息同步到整个集群,根据更新规则将range元数据信息更新到路由缓存中。
46.上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
47.同样地,本发明系统可以在shared nothing架构的分布式数据库集群内将接入节点收到数据请求通过路由缓存获得元数据信息将请求路由到适当的节点来完成操作,避免每次数据路由都从存储介质中查找造成的响应时间冗长和系统资源消耗,同时通过数据同步协议将每个节点的range元数据扩散到整个集群,根据更新规则将range元数据更新到路由缓存中,从而提升数据路由效率。
48.以及本发明还提供一种分布式数据库提升数据路由效率的装置,包括至少一个存储器和至少一个处理器;
49.所述至少一个存储器,用于存储机器可读程序;
50.所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种分布式数据库提升数据路由效率的方法。
51.上述装置内的处理器的信息交互、执行可读程序过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
52.同样地,本发明装置可以在shared nothing架构的分布式数据库集群内将接入节点收到数据请求通过路由缓存获得元数据信息将请求路由到适当的节点来完成操作,避免每次数据路由都从存储介质中查找造成的响应时间冗长和系统资源消耗,同时通过数据同步协议将每个节点的range元数据扩散到整个集群,根据更新规则将range元数据更新到路由缓存中,从而提升数据路由效率。
53.需要说明的是,上述各流程和各系统结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
54.以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。