采用跨机房链式转发的数据一致性优化方法及系统与流程

文档序号:30104025发布日期:2022-05-18 14:04阅读:186来源:国知局
采用跨机房链式转发的数据一致性优化方法及系统与流程

1.本发明涉及一种数据库技术的改进,更具体的说,本发明主要涉及一种采用跨机房链式转发的数据一致性优化方法及系统。


背景技术:

2.分布式数据库的数据一致性可以理解为事务的一致性和数据副本的一致性,这里我们关注在数据副本的一致性,即“数据在多份副本中存储时,如何保障数据的一致性”场景。针对数据一致性,需要用到一致性协议,常见的分布式协议有两阶段提交协议、三阶段提交协议、paxos和raft等,在工程实践时大多采用raft协议来保障数据一致性。简单来讲,raft协议主要包括两个过程:leader选举和日志复制,raft通过选举一个leader并赋予其管理复制日志的功能来维护节点间复制日志的一致性。leader从客户端接收日志,再把日志条目复制到其他follower节点上,并且在保证安全性的前提下,告诉其他follower将日志条目应用到它们的状态机中。在这个过程中,数据都是单向的从leader流向follower,同时只有超出半数节点复制完成才算成功复制,这样即使丢掉少数副本,也能保证系统中还有最新的数据。以5节点为例,如图1所示,客户端向主节点发送请求,主节点将请求作为一条日志加入其日志文件中,同时并行的向副节点发送日志。副节点成功复制日志数据后通知主节点复制成功,收到大多数的副节点响应后,主节点会提交日志并发送响应给客户端 (此处副节点1与副节点2均向主节点做出了回应,整个raft组中一共有3个节点完成了日志复制,可以提交;副节点3与副节点4因为故障无法响应主节点或者响应延迟不会影响日志的提交)。在部署方案的设计上,可选方案有单机房部署和多机房部署。由于单一机房部署的架构特点决定了数据库集群的可用性受制于机房的可用性,所以在实际工程实践中多采用多机房部署,根据机房的地理位置又可以分为同城双活、异地多活、两地三中心等多种部署方案。
3.在这类分布式数据库的设计上,数据只能从主节点单向的发送到副节点,副节点间不存在数据复制过程。当集群规模增大,需要同步数据的副本数增多时,主节点需要通信的副节点数随之增加,占用的带宽资源也随之增加,容易形成性能瓶颈。同时,由于分布式数据库集群的部署多为跨地域的多机房部署,这样带来的问题一是机房间通信有网络延迟的问题,二是机房间传输的数据量和副节点数成正相关关系,造成了带宽资源的极大浪费。因而有必要针对这类分布式系统的部署优化设计作进一步的研究和改进。


技术实现要素:

4.本发明的目的之一在于针对上述不足,提供一种采用跨机房链式转发的数据一致性优化方法及系统,以期望解决现有技术中主节点通信的点数增加,导致带宽资源占用增加,造成带宽资源浪费等技术问题。
5.为解决上述的技术问题,本发明采用以下技术方案:本发明一方面提供了一种采用跨机房链式转发的数据一致性优化方法,所述方法
包括如下步骤。
6.步骤a、分布式数据库中的第一主节点接收数据请求,并将其发送至第一副节点以及至少一个副节点组中的第二主节点。
7.步骤b、由第二主节点将所述数据请求发送至第二主节点所在副节点组中的第二副节点。
8.步骤c、所述第一副节点、第二主节点与第二副节点收到数据请求后,均分别向所述第一主节点反馈同步状态,从而完成分布式数据库的节点数据同步。
9.作为优选,进一步的技术方案是:在步骤a与步骤b中,所述第二主节点的产生方式为,由其所在副节点组中的全部节点向第一主节点发出请求,由第一主节点向当前副节点组其中的一个节点输出节点组锁,获取到节点组锁的节点成为当前副节点组的第二主节点。
10.更进一步的技术方案是:所述的方法还包括步骤d、所述第二主节点与第二副节点均与第一主节点保持联系,当单位周期内第一主节点未能联系到第二主节点时,则由当前第二主节点所在的副节点组中的第二副节点向第一主节点发出请求,由第一主节点重新输出节点组锁,由另一个第二副节点获取节点组锁,成为当前副节点组中的第二主节点。
11.本发明另一方面提供了一种采用跨机房链式转发的数据一致性优化系统,所述的系统包括位于主节点组中的第一主节点与第一副节点,位于副节点组中的第二主节点与第二副节点,其中:第一主节点用于在分布式数据库中接收数据请求,并将其发送至第一副节点以及至少一个副节点组中的第二主节点;第一副节点用于从第一主节点中接受数据请求并完成数据同步;第二主节点用于从第一主节点中接受数据请求并完成数据同步,并将数据请求发送至第二主节点所在副节点组中的第二副节点;第二副节点用于从第二主节点中接受数据请求并完成数据同步;所述第一副节点、第二主节点与第二副节点还用于在收到数据请求后,均分别向所述第一主节点反馈同步状态,从而完成分布式数据库的节点数据同步。
12.作为优选,进一步的技术方案是:所述副节点组为多个,且每个副节点组中均包含一个第二主节点与至少两个第二副节点;每个所述副节点组均位于各自的机房中,并通过网络接入所述第一主节点。
13.更进一步的技术方案是:第二主节点的产生方式为,由其所在副节点组中的全部节点向第一主节点发出请求,由第一主节点向当前副节点组其中的一个节点输出节点组锁,获取到节点组锁的节点成为当前副节点组的第二主节点。
14.更进一步的技术方案是:所述第二主节点与第二副节点均与第一主节点保持联系,当单位周期内第一主节点未能联系到第二主节点时,则由当前第二主节点所在的副节点组中的第二副节点向第一主节点发出请求,由第一主节点重新输出节点组锁,由另一个第二副节点获取节点组锁,成为当前副节点组中的第二主节点。
15.更进一步的技术方案是:至少一个副节点组所在的机房,与第一主节点所在的机房,集群部署于不同的城市地域。
16.与现有技术相比,本发明的有益效果至少是如下之一:通过采用集群部署分组的方式,可节省机房间通信带来的网络资源的冗余占用。具体而言,数据节点分组管理和原副节点写入功能相结合,可以节省机房间的网络带宽,从
原有的多份相同数据到只需要发一份数据副本,提升了网络资源的利用效率。
17.降低leader节点负载。数据节点分组管理和副节点写入功能相结合,将第一主节点进行数据复制的部分工作分摊给第二主节点执行,避免了由于集群规模增大而导致第一主节点负载过重的问题,避免了集群中“热点”的产生。
18.降低数据复制延迟。副节点组内的各个节点可以自动识别出故障节点,并根据节点可用性动态切换第二主节点,无需人工参与,避免因节点故障导致的数据复制的延迟。
附图说明
19.图1为现有技术中raft日志复制的流程图。
20.图2为用于说明本发明一个实施例的raft节点分布示意图。
21.图3为用于说明本发明一个实施例中raft日志复制的流程图。
22.图4为用于说明本发明一个实施例中raft节点反馈数据同步流程图。
23.图5为用于说明本发明一个实施例中第二主节点出现故障的切换流程图。
具体实施方式
24.下面结合附图对本发明作进一步阐述。
25.本发明在raft协议的基础上,增加了副节点组的概念,副节点组根据一定的策略在raft协议的副节点中产生,每个副节点组选举出一个代理主节点 (下述统称第二主节点)来负责其组内其他的副节点 (下文统称为第二副节点)的数据复制的同步工作,在数据复制过程中, raft协议中的主节点只需要将数据发送给本组的副节点以及其他副节点组的第二主节点即可,副节点组内的第二副节点的数据同步工作由该组的第二主节点代为完成。
26.当上述第二主节点出现故障后,再从组内其他的第二副节点选出一个新的第二主节点,继续承担组内其他节点的数据复制工作,即上述的第二主节点可以动态产生,避免了由于担任该角色的节点故障导致整个副节点组的日志复制失败。
27.在分布式数据库集群部署n个数据节点,分布在不同地域的机房。正常启动后通过raft选举过程选出一个第一主节点和n-1个副节点。
28.基于上述的设计思路,本发明的一个实施例是一种采用跨机房链式转发的数据一致性优化节点系统,如图2与图3所示,在确定了上述的第一主节点后,按照数据库集群拓扑对n-1个副节点进行分组,以9个数据节点集群为例,集群部署在2个地域的3个机房(机房a,机房b,机房c),则可按照机房将副节点分为两组即图2中所示的副节点组1与副节点组2,分别位于机房b与机房c。
29.因此本实施例的系统包括位于主节点组中的第一主节点与第一副节点,位于副节点组中的第二主节点与第二副节点;并且机房a、机房b与机房c中的节点通过网络进行数据交互。第一主节点所在的主节点组位于机房a,主节点组中还包括了两个第一副节点,在机房b与机房c中各部署一个副节点组,每个副节点组均设有一个第二主节点与两个第二副节点。副节点组中的每个节点均通过网络接入第一主节点。
30.在上述结构的节点系统中:参考图3所示,第一主节点负责从分布式数据库中接收数据请求,即在集群有数据
写入后,开始数据复制过程,第一主节点将数据分别发送至第一副节点以及两个副节点组中的第二主节点。
31.第一副节点从第一主节点中接受数据请求并完成数据同步。
32.两个两副节点组中的第二主节点负责从第一主节点中接受数据请求并完成数据同步,并将数据请求发送至第二主节点所在副节点组中的第二副节点。
33.第二副节点从第二主节点中接受数据请求并完成数据同步。
34.参考图4所示,上述第一副节点、第二主节点与第二副节点在收到数据请求后,均分别向第一主节点反馈同步状态,从而完成分布式数据库的节点数据同步。在副节点组中的第二副节点收到数据后,均直接向第一主节点进行反馈,不再进行第二主节点与第二副节点的区分,根据raft协议,只要投票的节点数达到预设的法定数量时,即可以推动日志数据的提交,进而保证日志数据的安全性。
35.当第一主节点收到反馈并统计得出大多数副节点已经复制完成后,返回上层通知数据复制成功,即完成上述的数据同步。
36.上述第二主节点是在其所属副节点组中的节点中任意产生,具体为由其所在副节点组中的全部节点向第一主节点发出请求,由第一主节点向当前副节点组其中的一个节点输出节点组锁,获取到节点组锁的节点成为当前副节点组的第二主节点。
37.在图2-4所示的系统中,当节点故障因故障无法及时响应请求时,大致可分为以下几种情况。
38.1)与第一主节点同机房的第一副节点异常。
39.2)机房b中的第二主节点异常。
40.3)机房b中的第二副节点异常。
41.4)机房b中的所有节点异常。
42.针对异常1),同原raft协议异常处理,只要其他任何节点中大多数成功复制日志,即可完成raft日志数据提交。
43.针对异常2),参考图5所示,当原有的第二主节点出现异常后,新的第二主节点会从剩余的第二副节点中产生,接替第二主节点承担起组内日志复制工作。具体而言,每个副节点组中的第二主节点与第二副节点均与第一主节点保持联系,当单位周期内第一主节点未能联系到第二主节点时,则由当前第二主节点所在的副节点组中的第二副节点向第一主节点发出请求,由第一主节点重新输出节点组锁,由另一个第二副节点获取节点组锁,成为当前副节点组中的第二主节点。
44.针对异常3),第二副节点异常不会对组内其他节点产生影响,当raft组大多数完成日志复制后,即可提交日志数据。
45.针对异常4),机房b 所有节点异常,整个raft组内只剩余机房c中一个副节点组2的分组。首先机房b的异常对机房c的节点不产生任何影响,其次只要整个raft组仍存有大多数节点,且大多数节点均可以完成日志复制,则日志复制过程正常进行。对机房b所有节点异常情况,机房a中两个第一副节点和机房c中三个节点一共五个节点,只要任意三个节点完成日志复制,加上机房a中的第一主节点,一共四个节点完成日志复制,使得第一主节点即可完成提交。
46.在上述四种异常情况基础上,未穷举的异常情况均同原raft协议中异常情况处理
即可。
47.值得注意的是,上述的思路也可在更多数据节点的基础上,分为更多的副节点组,并将其部署在更多的机房中,本实施例中的9个数据节点仅为对本发明的示例性说明。
48.基于上述结构的节点系统,本发明的另一个实施例是一种采用跨机房链式转发的数据一致性优化方法,该方法包括并优选按照如下步骤执行:步骤s1、分布式数据库中的第一主节点接收数据请求,并将其发送至第一副节点以及至少一个副节点组中的第二主节点。
49.步骤s2、由第二主节点将所述数据请求发送至第二主节点所在副节点组中的第二副节点。在本步骤中,第二主节点的产生方式为,由其所在副节点组中的全部节点向第一主节点发出请求,由第一主节点向当前副节点组其中的一个节点输出节点组锁,获取到节点组锁的节点成为当前副节点组的第二主节点。
50.并且,所述第二主节点与第二副节点均与第一主节点保持联系,当第二主节点出现异常,即当单位周期内第一主节点未能联系到第二主节点时,则由当前第二主节点所在的副节点组中的第二副节点向第一主节点发出请求,由第一主节点重新输出节点组锁,由另一个第二副节点获取节点组锁,成为当前副节点组中的第二主节点。
51.步骤s3、第一副节点、第二主节点与第二副节点收到数据请求后,均分别向所述第一主节点反馈同步状态,从而完成分布式数据库的节点数据同步。
52.除上述以外,还需要说明的是在本说明书中所谈到的“一个实施例”、“另一个实施例”、“实施例”等,指的是结合该实施例描述的具体特征、结构或者特点包括在本技术概括性描述的至少一个实施例中。在说明书中多个地方出现同种表述不是一定指的是同一个实施例。进一步来说,结合任一实施例描述一个具体特征、结构或者特点时,所要主张的是结合其他实施例来实现这种特征、结构或者特点也落在本发明的范围内。
53.尽管这里参照本发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本技术公开的原则范围和精神之内。更具体地说,在本技术公开、附图和权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1