分布式系统成员变更方法和分布式系统技术方案

技术编号:23055897 阅读:48 留言:0更新日期:2020-01-07 15:40
一种更高效率的分布式系统成员变更方案,包括:第一目标节点向管理服务器请求节点地址集合,其中,所述节点地址集合中包括了分布式系统中所有节点的地址;当第一目标节点的地址不在所述节点地址集合中,所述第一目标节点向分布式系统的主节点发送加入请求;所述主节点把所述第一目标节点的地址增加到所述节点地址集合中,以及指令所述分布式系统中的所有从节点把所述第一目标节点的地址增加到本地成员列表。

Distributed system member change method and distributed system

【技术实现步骤摘要】
分布式系统成员变更方法和分布式系统
本申请涉及计算机领域,特别涉及分布式系统。
技术介绍
分布式系统包括多个成员,分布式系统中的成员增加(或者减少)后,需要把成员的增加(或者减少)这一信息通知到各个成员,以便让集群中的成员可以获知集群中最新的成员情况。例如,成员可以通过在自己记录的成员列表中新增新的成员(或者删除原有成员)进行成员变更。在业界,主要通过日志(log)同步技术实现成员变更,在成员发生增加(或者减少)后,集群的主节点获得成员发生增加(或者减少)的信息,把进行成员变更指令以操作日志的方式同步给各个从节点,从节点收到成员变更指令后按照操作日志更新自己记录的成员列表。在现有技术中,假设成员变更前集群成员集合为C1,成员变更后集群成员为C2,下面对两阶段提交来执行成员变更进行介绍。第一阶段:主节点通知所有原有成员执行日志,将集群成员集合更新为{C1,C2}(也就是说集群成员既保存了C1又保存了C2)。在此期间每个原有成员的成员列表为C1(还没收到更新通知或者更新尚未完成)或者{C1,C2}(已经收到更新通知,并且完成了更新)。对于{C1,C2}列表来说,主节点必须同时满足C1集合的大多数和C2集合的大多数。换句话说需要满足一个原则:对于拥有C1列表的成员所认可的主节点、和对于拥有C2列表的成员所认可的主节点,是同一个节点。这样就保证了在成员变更过程中不会存在双主节点的场景。第二阶段:第一阶段成功(大多数成员或者所有成员成功的更新为{C1,C2}就可以认为第一阶段成功)后,主节点通知所有成员将通过执行日志把成员集合更新为C2。在更新完成前,每个成员的成员列表为{C1,C2}(更新完成前)或者C2(更新完成后)。由上可以看出,上述使用日志的方案过于复杂,既要花费大量的时间又要耗费节点大量的资源,而且必须人工参与,增加了运维人员的工作量。
技术实现思路
第一方面,提供一种分布式系统成员变更方法,包括:第一目标节点向管理服务器请求节点地址集合,其中,所述节点地址集合中包括所述分布式系统中所有节点的地址,所述分布式系统主节点和多个从节点;当第一目标节点的地址不在所述节点地址集合中,所述第一目标节点向分布式系统的所述主节点发送加入请求,所述加入请求中包括所述第一目标节点的地址;在收到所述加入请求后,把所述成员增加指令中的所述第一目标节点的地址增加到所述主节点的本地成员列表中,所述主节点指令所述分布式系统中每个节点把所述第一目标节点的地址增加到本地成员列表。应用该方法,第一目标节点可以主动自发加入分布式系统,不再需要依赖运维人员手动配置主节点。而且不再使用日志作为技术手段,整个过程简洁高效,资源占用率低。在所述第一方面的第一种可能实现中,所述第一目标节点创建所述第一目标节点的本地成员列表,所述第一目标节点的本地成员列表包括:所述分布式系统中所有节点的地址,以及所述第一目标节点的地址。该方案用于进行所述第一目标节点的配置,使所述第一目标节点认可自己成为所述分布式系统的成员。在所述第一方面的第二种可能实现中,所述主节点指令所述分布式系统中的所述多个从节点中的每个从节点把所述第一目标节点的地址增加到所述本地成员列表,具体包括:所述主节点发送成员增加指令给所述每个从节点,其中,所述成员增加指令中包括所述第一目标节点的地址;所述主节点接收所述从节点对发送的成员增加响应,所述成员增加响应是所述成员增加指令的响应消息;所述主节点把所述第一目标节点的地址增加到本地成员列表,以及所述主节点发送成员增加生效指令给所有从节点,指示所有从节点在收到所述成员增加生效指令后,按照所述成员增加响应把所述第一目标节点的地址增加到本地成员列表。该方案介绍了在增加从节点的过程中,主节点和从节点直接的交互流程。在所述第一方面的第三种可能实现中,所述第一目标节点向所述主节点发送所述加入请求,包括:所述第一目标节点通过向所述节点地址集合中的所有地址广播所述加入请求的方式,从而把所述加入请求发送给所述主节点。使用广播的方法,可以确保所述加入请求能够被的发送给主节点,避免主节点收不到加入请求。在所述第一方面的第四种可能实现中,所述第一目标节点向所述主节点发送所述加入请求,包括:所述第一目标节点通过向第一目标节点向管理服务器请求节点地址集合之后,所述方法还包括下述步骤之一:所述主节点缓存收到的下一个加入请求;或者所述主节点缓存收到的离开请求。该方案可以避免多个成员变更请求并行处理所引起的冲突故障,并且避免其他加入/离开请求被丢失。在所述第一方面的第五种可能实现中,所述成员增加生效指令具体包括COMMIT指令。该方案介绍了成员增加生效指令的具体内容。在所述第一方面的第六种可能实现中,所述地址包括:节点ID,节点IP地址和节点端口号中的至少一种或者多种的组合。该方案介绍了地址的可能形式,地址还可以是其他形式,可以作为节点的唯一标记即可。在所述第一方面的第七种可能实现中,在所述主节点收到另一个加入请求后,所述主节点记录成员变更标记,所述成员变更标记包括:变更类型和所述第三目标节点的地址;当在所述主节点按照另一个加入请求,指令所述分布式系统中的所述多个从节点中的每个从节点把所述第一目标节点的地址增加到本地成员列表之前,所述主节点故障;所述分布式系统中的从节点选举出新的主节点;所述新的主节点读取所述变更标记后,按照所述变更类型,指令所述分布式系统中的从节点把所述第三目标节点的地址增加到本地成员列表。该方案使得:在主节点故障后,新选出的主节点可以重新执行成员增加/删除操作。从而保证了成员增加/删除请求的可靠执行。在所述第一方面的第八种可能实现中,在所述第一方面的第二种可能实现的基础上,所述方法还可以包括:第二目标节点发送离开请求给所述主节点;在收到所述离开请求后,所述主节点发送成员删除指令给所有从节点,其中,成员离开指令包括所述第二目标节点的地址;每个从节点在收到所述成员删除指令后,发送成员删除响应给所述主节点;所述主节点在收到所述从节点的成员删除响应后,把所述第二目标节点的地址从所述节点地址集合中删除;所述主节点把所述第二目标节点地址从本地成员列表中删除,所述主节点发送成员删除生效指令给所述每个从节点;所述每个从节点从所述本地成员列表中删除所述第二目标节点的地址。该方案介绍了如何从所述分布式系统中删除一个节点。第二方面,提供一种节点集合,所述节点集合包括第一目标节点和分布式系统,所述分布式系统包括多个节点,所述分布式系统可以执行上述第一方面的方法,或者执行第一方面的各个可能实现。第三方面,提供一种分布式系统成员变更方法,包括:第二目标节点向管理服务器请求节点地址集合,其中,所述分布式系统包括主节点和多个从节点,所述节点地址集合中包括所述分布式系统中所有节点的地址;当所述第二目标节点的地址在所述节点地址集合中,所述第二目标节点向所述分布式系统的所述主节点发送离开请求,所述离开请求中包括所述第二目标节点的地址;在收到所有所述从节点的所述离开请求后,所述主节点把所述第二目标节点的地址从所述主节点的本本文档来自技高网
...

【技术保护点】
1.一种分布式系统成员变更方法,其特征在于,包括:/n第一目标节点向管理服务器请求节点地址集合,其中,所述节点地址集合中包括所述分布式系统中所有节点的地址,所述分布式系统主节点和多个从节点;/n当第一目标节点的地址不在所述节点地址集合中,所述第一目标节点向分布式系统的所述主节点发送加入请求,所述加入请求中包括所述第一目标节点的地址;/n在收到所述加入请求后,把所述成员增加指令中的所述第一目标节点的地址增加到所述主节点的本地成员列表中,所述主节点指令所述分布式系统中每个节点把所述第一目标节点的地址增加到本地成员列表。/n

【技术特征摘要】
1.一种分布式系统成员变更方法,其特征在于,包括:
第一目标节点向管理服务器请求节点地址集合,其中,所述节点地址集合中包括所述分布式系统中所有节点的地址,所述分布式系统主节点和多个从节点;
当第一目标节点的地址不在所述节点地址集合中,所述第一目标节点向分布式系统的所述主节点发送加入请求,所述加入请求中包括所述第一目标节点的地址;
在收到所述加入请求后,把所述成员增加指令中的所述第一目标节点的地址增加到所述主节点的本地成员列表中,所述主节点指令所述分布式系统中每个节点把所述第一目标节点的地址增加到本地成员列表。


2.根据权利要求1所述的方法,还包括:
所述第一目标节点创建所述第一目标节点的本地成员列表,所述第一目标节点的本地成员列表包括:所述分布式系统中所有节点的地址,以及所述第一目标节点的地址。


3.根据权利要求1或2所述的方法,所述主节点指令所述分布式系统中的所述多个从节点中的每个从节点把所述第一目标节点的地址增加到所述本地成员列表,具体包括:
所述主节点发送成员增加指令给所述每个从节点,其中,所述成员增加指令中包括所述第一目标节点的地址;
所述主节点接收所述从节点对发送的成员增加响应,所述成员增加响应是所述成员增加指令的响应消息;
所述主节点把所述第一目标节点的地址增加到本地成员列表,以及所述主节点发送成员增加生效指令给所有从节点,指示所有从节点在收到所述成员增加生效指令后,按照所述成员增加响应把所述第一目标节点的地址增加到本地成员列表。


4.根据权利要求3所述的方法,所述成员增加生效指令具体包括COMMIT指令。


5.根据权利要求3所述的方法,所述主节点接收所述从节点对所述成员发送的成员增加响应之后,还包括:
所述主节点指示所述管理服务器把所述第一目标节点的地址增加所述管理服务器的所述节点地址集合中。


6.根据权利要求1所述的方法,所述第一目标节点向所述主节点发送所述加入请求,包括:
所述第一目标节点通过向所述节点地址集合中的所有地址广播所述加入请求,从而把所述加入请求发送给所述主节点。


7.根据权利要求1所述的方法,第一目标节点向管理服务器请求节点地址集合之后,所述方法还包括下述步骤中的至少一个:
所述主节点缓存后续收到的其他加入请求;
所述主节点缓存收到的离开请求。


8.根据权利要求1所述的方法,所述地址包括:
节点ID,节点IP地址和节点端口号中的至少一种或者多种的组合。


9.根据权利要求1-8中任一所述的方法,所述方法还包括:
第二目标节点发送离开请求给所述主节点;
在收到所述离开请求后,所述主节点发送成员删除指令给所述多个从节点中的每个从节点,其中,所述成员删除指令包括所述第二目标节点的地址;
每个从节点在收到所述成员删除指令后,发送成员删除响应给所述主节点;
所述主节点收到所述每个从节点的成员删除响应后,把所述第二目标节点的地址从所述节点地址集合中删除;所述主节点把所述第二目标节点地址从本地成员列表中删除,所述主节点发送成员删除生效指令给所述每个从节点;所述每个从节点从所述本地成员列表中删除所述第二目标节点的地址。


10.根据权利要求1所述的方法,在所述主节点指令所述分布式系统中每个节点把所述第一目标节点的地址增加到本地成员列表之后,还包括:
在所述主节点收到另一个加入请求后,所述主节点记录成员变更标记,所述成员变更标记包括:变更类型和所述第三目标节点的地址;
当在所述主节点按照另一个加入请求,指令所述分布式系统中的所述多个从节点中的每个从节点把所述第一目标节点的地址增加到本地成员列表之前,所述主节点故障;
所述分布式系统中的从节点选举出新的主节点;
所述新的主节点读取所述变更标记后,按照所述变更类型,指令所述分布式系统中的从节点把所述第三目标节点的地址增加到本地成员列表。
<...

【专利技术属性】
技术研发人员:白杨陈雷
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1