首页> 中国专利> 一种基于Gossip的分布式数据库多区域分布方法及系统

一种基于Gossip的分布式数据库多区域分布方法及系统

摘要

本发明公开了一种基于Gossip的分布式数据库多区域分布方法及系统,属于计算机通信技术领域;所述的方法的具体步骤如下:S1通过SQL语句对数据库、表或行进行区域配置。将区域配置信息写入对应系统对象中;S2处理Range副本的分裂、合并和重分布流程,根据区域配置管理副本各区域分布,维持区域级容灾副本数;S3按Gossip协议的拓扑发送和接收广播消息,实现节点之间同步数据;S4定义广播消息的格式和内容,记录并通过S3转发广播消息到其他节点,同步消息内容到S2;本发明能够精确控制区域副本分布;充分利用就近读写的优势,适用更灵活的业务场景;支持区域级副本冗余容灾,确保发生区域故障时能够正常提供服务;通过Gossip加快节点间消息同步速度。

著录项

  • 公开/公告号CN114896341A

    专利类型发明专利

  • 公开/公告日2022-08-12

    原文格式PDF

  • 申请/专利权人 山东浪潮科学研究院有限公司;

    申请/专利号CN202210496407.2

  • 发明设计人 张士威;王瀚墨;陈磊;

    申请日2022-05-09

  • 分类号G06F16/27(2019.01);G06F16/23(2019.01);G06F16/242(2019.01);G06F16/28(2019.01);H04L67/1095(2022.01);H04L67/1097(2022.01);

  • 代理机构济南信达专利事务所有限公司 37100;

  • 代理人姜鹏

  • 地址 250100 山东省济南市高新浪潮路1036号S02号楼

  • 入库时间 2023-06-19 16:22:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-12-13

    专利申请权的转移 IPC(主分类):G06F16/27 专利申请号:2022104964072 登记生效日:20221201 变更事项:申请人 变更前权利人:山东浪潮科学研究院有限公司 变更后权利人:上海沄熹科技有限公司 变更事项:地址 变更前权利人:250100 山东省济南市高新浪潮路1036号S02号楼 变更后权利人:200120 上海市浦东新区中国(上海)自由贸易试验区张东路1158号、丹桂路1059号2幢305-22室

    专利申请权、专利权的转移

  • 2022-08-30

    实质审查的生效 IPC(主分类):G06F16/27 专利申请号:2022104964072 申请日:20220509

    实质审查的生效

说明书

技术领域

本发明公开一种基于Gossip的分布式数据库多区域分布方法及系统,涉及计算机通信技术域。

背景技术

分布式数据库的常见架构是最外层是SQL,内部数据采用支持事务的KV Store进行管理,数据库将数据组织成有序的Key-Value对形式,形成一个KV Map,SQL请求最终会转换为KV操作。KV Map逻辑上按照范围被切分成多个Key空间,每个Key空间称为一个Range,数据最终划分为多个Range。

为保证Range的高可用和Range操作的ACID语义,每个Range有一个专门Raft组管理各副本,Raft组中有一个Leader和Lease副本负责整个Range的读写。

分布式数据库的区域分布,在部署层面与云服务的Region概念类似,在物理上是指一个可提供服务的较大区域,一般包含多个数据中心,多个服务器机房。

一般在数据库集群启动时,分布区域就已确定了,数据随机分布在各区域上,这样一方面无法在数据库、表或行层面上更精确地控制这些对象的分布区域,另一方面,也使客户端请求的处理可能会跨一个或多个区域,导致消息延迟增多,无法充分利用分布式数据库就近读写的优势。

Gossip协议一般称作“流言算法”、“疫情传播算法”。特点是Gossip网络中节点之间是对等的,没有中心节点,允许节点的任意增加和减少,具有可扩展性。Gossip网络下的消息传递速度是指数级的,但由于采用弱一致性原则,同一时间各节点的信息可能存在差异,但随着时间推移,最终某一时刻全网信息会达成一致。

故现发明一种基于Gossip的分布式数据库多区域分布方法及系统,以解决上述问题。

发明内容

本发明针对现有技术的问题,提供一种基于Gossip的分布式数据库多区域分布方法及系统,所采用的技术方案为:一种基于Gossip的分布式数据库多区域分布方法,所述方法的具体步骤如下:

S1通过SQL语句对数据库、表或行进行区域配置;将区域配置信息写入对应系统对象中;

S2处理Range副本的分裂、合并和重分布流程,根据区域配置管理副本各区域分布,维持区域级容灾副本数;

S3按Gossip协议的拓扑发送和接收广播消息,实现节点之间同步数据;

S4定义广播消息的格式和内容,记录并通过S3转发广播消息到其他节点,同步消息内容到S2。

所述的S1具体步骤如下:

S101解析和执行区域配置类SQL语句;

S102将区域配置信息写入对应系统对象中。

所述的S2具体步骤如下:

S201将system消息中系统对象的Key区间范围和副本Key区间范围进行匹配,从而找到系统对象对应的Range副本,再将区域配置更新到对应副本;

S202根据Range副本的Key区间范围进行Range的拆分、合并或迁移;

S203由区域配置决定各区域分布的具体副本数,维持副本分布单元的区域级容灾的副本数。

所述的S3具体步骤如下:

S301将S4下发的消息广播到其他节点;

S302将从其他节点接收的消息上报至S4。

所述的S4具体步骤如下:

S401定义和管理主要携带节点地址和区域信息的node消息以及携带各系统对象的描述信息的system消息;

S402将S1下发各系统对象的区域配置信息写入到system消息中;

S403转换system消息中的区域配置,将区域配置信息更新到S2对应的Range副本,再将该副本放入副本处理队列;

S404当system消息中含有区域配置时,将区域配置同步给S2;当收到node消息时,将更新S2中的node信息记录表。

一种基于Gossip的分布式数据库多区域分布系统,其特征是所述的系统具体包括SQL区域配置单元、副本分布单元、Gossip单元和消息管理单元:

SQL区域配置单元:通过SQL语句对数据库、表或行进行区域配置;将区域配置信息写入对应系统对象中;

副本分布单元:处理Range副本的分裂、合并和重分布流程,根据区域配置管理副本各区域分布,维持区域级容灾副本数;

Gossip单元:按Gossip协议的拓扑发送和接收广播消息,实现节点之间同步数据;

消息管理单元:定义广播消息的格式和内容,记录并通过Gossip单元转发广播消息到其他节点,同步消息内容到分布单元。

所述SQL区域配置单元具体包括解析执行单元和写入单元:

解析执行单元:解析和执行区域配置类SQL语句;

写入单元:将区域配置信息写入对应系统对象中。

所述副本分布单元具体包括更新单元、Range操作单元和容灾单元:

更新单元:将system消息中系统对象的Key区间范围和副本Key区间范围进行匹配,从而找到系统对象对应的Range副本,再将区域配置更新到对应副本;

Range操作单元:根据Range副本的Key区间范围进行Range的拆分、合并或迁移;

容灾单元:由区域配置决定各区域分布的具体副本数,维持副本分布单元的区域级容灾的副本数。

所述Gossip单元具体包括广播单元和上报单元:

广播单元:将管理单元下发的消息广播到其他节点;

上报单元:将从其他节点接收的消息上报至管理单元。

所述消息管理单元具体包括定义消息管理单元、配置管理单元、分布管理单元和消息中转管理单元。

定义管理单元:定义和管理主要携带节点地址和区域信息的node消息以及携带各系统对象的描述信息的system消息;

配置管理单元:将配置单元下发各系统对象的区域配置信息写入到system消息中;

分布管理单元:转换system消息中的区域配置,将区域配置信息更新到分布单元对应的Range副本,再将该副本放入副本处理队列;

消息中转单元:当system消息中含有区域配置时,将区域配置同步给分布单元;当收到node消息时,将更新分布单元中的node信息记录表。

本发明的有益效果为:(1)通过SQL语句配置数据库、表或行的区域,精确控制各数据对象的区域副本分布;(2)充分利用分布式数据库就近读写的优势,适用更灵活的业务场景。比如,客户端可通过SQL语句将常用数据库分布在本地较近的区域当中,以获得更快的性能表现;(3)支持区域级副本冗余容灾,确保发生区域故障时仍然能够正常提供服务;(4)通过Gossip单元传递节点信息和区域配置信息,加快节点间消息同步速度。

一般分布式数据库集群启动后,数据对象的副本在各区域之间是随机分布的,无法精确控制数据库、表或行的具体分布区域,导致一些客户端请求的处理过程可能跨一个或多个区域,消息延迟增多,无法充分利用分布式数据库就近读写的优势。

本发明提出一种基于Gossip的分布式数据库多区域分布方法,可通过SQL语句配置数据库、表或行的分布区域,采用Gossip协议在集群中快速同步区域配置和节点信息,使各节点能够根据区域配置精确控制副本分布,从而充分利用分布式数据库就近读写的优势,适用更灵活的业务场景。另外,本发明也提出了区域级副本冗余容灾方案,以确保发生区域故障时仍然能够正常提供服务。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是分布式数据库集群区域、节点和Range副本关系示图;图2是本发明系统的结构示意图;图3是本发明的管理单元示意图;图4是本发明的分布单元示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定;

实施例一:

一种基于Gossip的分布式数据库多区域分布方法,所述方法的具体步骤如下:

S1通过SQL语句对数据库、表或行进行区域配置;将区域配置信息写入对应系统对象中;

S2处理Range副本的分裂、合并和重分布流程,根据区域配置管理副本各区域分布,维持区域级容灾副本数;

S3按Gossip协议的拓扑发送和接收广播消息,实现节点之间同步数据;

S4定义广播消息的格式和内容,记录并通过S3转发广播消息到其他节点,同步消息内容到S2;

分布式数据库集群中,区域在物理上指代一个可提供服务的较大区域,一般包含多个数据中心,多个服务器机房;一片区域里可能包含多个数据库节点,节点所在区域在节点启动时指定,一个节点上可能分布多个数据副本;

通过SQL语句对数据库、表或行进行区域配置,通过自定义消息描述节点和区域信息,再通过Gossip协议广播消息到集群其他节点,各节点根据广播消息中的节点和区域配置调整数据副本的区域分布;

本发明包括四个功能单元:SQL区域配置单元、副本分布单元、Gossip单元和消息管理单元;

进一步的,所述的S1具体步骤如下:

S101解析和执行区域配置类SQL语句;

S102将区域配置信息写入对应系统对象中;

SQL区域配置单元实现区域配置类SQL语句的解析和执行,可通过SQL语句对数据库、表或行进行区域配置,最终将区域配置信息写入对应系统对象中;数据库内部通过系统对象描述和管理数据库、表或行对象,系统对象记录全局唯一的对象ID,数据区间起始Key和区域配置信息;

进一步的,所述的S2具体步骤如下:

S201将system消息中系统对象的Key区间范围和副本Key区间范围进行匹配,从而找到系统对象对应的Range副本,再将区域配置更新到对应副本;

S202根据Range副本的Key区间范围进行Range的拆分、合并或迁移;

S203由区域配置决定各区域分布的具体副本数,维持副本分布单元的区域级容灾的副本数;

副本分布单元负责处理Range副本的分裂、合并和重分布流程,根据区域配置管理副本各区域分布,同时维持区域级容灾的副本数;副本分布单元从副本处理队列读取待处理副本,检查副本是否全部位于配置区域内,如有副本未分布在指定区域中,则发起副本分布流程;

system消息中的系统对象和每个Range副本都记录有各自占用的Key区间范围,在区域配置转换过程中,本发明中的副本分布单元将system消息中系统对象的Key区间范围和副本Key区间范围进行匹配,从而找到系统对象对应的Range副本,再将区域配置更新到对应副本;

副本分布过程是,首先,根据Range副本的Key区间范围判断是否进行Range的拆分、合并或迁移;检查Range副本的start key和end key和system消息中系统对象的startkey和end key的Key区间包含关系;如果系统对象Key区间是Range副本Key区间的子集,则需要先进行Range分裂再进行副本迁移,如果系统对象Key区间包含当前Range范围,则先进行Range副本迁移再确定是否进行Range合并;

第二步,副本迁移时,根据区域配置从node信息记录表中随机选取节点,先在该节点增加副本,再删除原节点上的副本;

副本分布单元维持区域级容灾的副本数,是保证如某一区域全部节点发生故障时,仍能正常对外提供服务的副本数;各区域分布的具体副本数由区域配置决定;以3副本为例,如果指定某数据库在3个区域分布,那么其中任一区域需保证至少分布1个副本,如果在2个区域分布,则各区域至少分布2个副本才能保证区域级容灾;

进一步的,所述的S3具体步骤如下:

S301将S4下发的消息广播到其他节点;

S302将从其他节点接收的消息上报至S4;

Gossip单元实现广播消息的记录和转发,内部按Gossip协议实现节点之间广播通信,按Gossip协议的拓扑模式发送和接收区域分布相关数据,也就是将消息管理单元下发的消息广播到其他节点,并将从其他节点接收的消息上报给消息管理单元;通信过程中节点既是client也是server;

再一步的,所述的S4具体步骤如下:

S401定义和管理主要携带节点地址和区域信息的node消息以及携带各系统对象的描述信息的system消息;

S402将S1下发各系统对象的区域配置信息写入到system消息中;

S403转换system消息中的区域配置,将区域配置信息更新到S2对应的Range副本,再将该副本放入副本处理队列;

S404当system消息中含有区域配置时,将区域配置同步给S2;当收到node消息时,将更新S2中的node信息记录表;

数据库内部通过系统对象描述并管理数据库、表或行,系统对象记录了全局唯一的对象ID,数据区间起始Key和区域配置信息;

消息管理单元定义和管理两类广播消息:node和system,消息采用key-value形式表示;node消息主要携带节点地址和区域信息,具体是node消息的value部分记录节点的id、地址以及所在区域;其中节点id按照节点启动顺序从1开始分配,节点地址即节点对外的通信地址,区域信息在节点启动时指定;system消息主要携带各系统对象的区域配置信息;system消息value部分携带各系统对象的描述信息,如数据库、表或行的对象id,占用的Key区间范围以及区域配置等;系统对象配置发生变化时,节点将会对外发送system广播消息。

消息管理单元做为SQL区域配置单元、副本分布单元和Gossip单元的中间通道,主要实现SQL区域配置、广播消息和副本区域配置三者之间的配置同步;消息管理单元主要完成以下工作:

消息管理单元收到Gossip单元上报的system消息中如果含有区域配置,消息管理单元会将区域配置同步给副本分布单元;具体是先将该消息携带的区域配置信息转换为对应副本的区域配置信息,再将区域配置信息更新到副本分布单元对应的Range副本上,最后将该副本放入副本处理队列,由副本分布单元进一步处理;

SQL层下发各系统对象的区域配置信息最后会写入到system消息中,消息管理单元再通过Gossip单元将system消息广播到其他节点;

以下三种情况之一,通过Gossip单元将node消息广播到其他节点:

1.节点启动

2.新节点加入集群

3.定时1小时超时

消息管理单元从Gossip接收到node消息时,首先更新副本分布单元中的node信息记录表,该表记录了各节点的ID、地址和区域信息;

节点消息管理单元从Gossip接收到node广播消息后,首先更新副本分布单元中的node信息记录表,表中记录各节点的ID、地址和区域信息;如果收到system消息,则将该消息携带的区域配置信息转换为对应副本的区域配置信息,再更新到副本分布单元对应的Range副本,并将该副本放入副本处理队列;

实施例二:

一种基于Gossip的分布式数据库多区域分布系统,其特征是所述的系统具体包括SQL区域配置单元、副本分布单元、Gossip单元和消息管理单元:

SQL区域配置单元:通过SQL语句对数据库、表或行进行区域配置;将区域配置信息写入对应系统对象中;

副本分布单元:处理Range副本的分裂、合并和重分布流程,根据区域配置管理副本各区域分布,维持区域级容灾副本数;

Gossip单元:按Gossip协议的拓扑发送和接收广播消息,实现节点之间同步数据;

消息管理单元:定义广播消息的格式和内容,记录并通过Gossip单元转发广播消息到其他节点,同步消息内容到分布单元;

所述SQL区域配置单元具体包括解析执行单元和写入单元:

解析执行单元:解析和执行区域配置类SQL语句;

写入单元:将区域配置信息写入对应系统对象中;

所述副本分布单元具体包括更新单元、Range操作单元和容灾单元:

更新单元:将system消息中系统对象的Key区间范围和副本Key区间范围进行匹配,从而找到系统对象对应的Range副本,再将区域配置更新到对应副本;

Range操作单元:根据Range副本的Key区间范围进行Range的拆分、合并或迁移;

容灾单元:由区域配置决定各区域分布的具体副本数,维持副本分布单元的区域级容灾的副本数;

所述Gossip单元具体包括广播单元和上报单元;

广播单元:将管理单元下发的消息广播到其他节点;

上报单元:将从其他节点接收的消息上报至管理单元;

所述消息管理单元具体包括定义消息管理单元、配置管理单元、分布管理单元和消息中转管理单元;

定义管理单元:定义和管理主要携带节点地址和区域信息的node消息以及携带各系统对象的描述信息的system消息;

配置管理单元:将配置单元下发各系统对象的区域配置信息写入到system消息中;

分布管理单元:转换system消息中的区域配置,将区域配置信息更新到分布单元对应的Range副本,再将该副本放入副本处理队列;

消息中转单元:当system消息中含有区域配置时,将区域配置同步给分布单元;当收到node消息时,将更新分布单元中的node信息记录表。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号