【技术实现步骤摘要】
分布式系统成员变更方法和分布式系统
本申请涉及计算机领域,特别涉及分布式系统。
技术介绍
分布式系统包括多个成员,分布式系统中的成员增加(或者减少)后,需要把成员的增加(或者减少)这一信息通知到各个成员,以便让集群中的成员可以获知集群中最新的成员情况。例如,成员可以通过在自己记录的成员列表中新增新的成员(或者删除原有成员)进行成员变更。在业界,主要通过日志(log)同步技术实现成员变更,在成员发生增加(或者减少)后,集群的主节点获得成员发生增加(或者减少)的信息,把进行成员变更指令以操作日志的方式同步给各个从节点,从节点收到成员变更指令后按照操作日志更新自己记录的成员列表。在现有技术中,假设成员变更前集群成员集合为C1,成员变更后集群成员为C2,下面对两阶段提交来执行成员变更进行介绍。第一阶段:主节点通知所有原有成员执行日志,将集群成员集合更新为{C1,C2}(也就是说集群成员既保存了C1又保存了C2)。在此期间每个原有成员的成员列表为C1(还没收到更新通知或者更新尚未完成)或者{C1,C2}(已经收到更新通知,并且完成了更新)。对于{C1,C2}列表来说,主节点必须同时满足C1集合的大多数和C2集合的大多数。换句话说需要满足一个原则:对于拥有C1列表的成员所认可的主节点、和对于拥有C2列表的成员所认可的主节点,是同一个节点。这样就保证了在成员变更过程中不会存在双主节点的场景。第二阶段:第一阶段成功(大多数成员或者所有成员成功的更新为{C1,C2}就可以认为第一阶段成功)后,主节点通知所有成员将通过执 ...
【技术保护点】
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所述的方法,在所述主节点指令所述分布式系统中每个节点把所述第一目标节点的地址增加到本地成员列表之后,还包括:
在所述主节点收到另一个加入请求后,所述主节点记录成员变更标记,所述成员变更标记包括:变更类型和所述第三目标节点的地址;
当在所述主节点按照另一个加入请求,指令所述分布式系统中的所述多个从节点中的每个从节点把所述第一目标节点的地址增加到本地成员列表之前,所述主节点故障;
所述分布式系统中的从节点选举出新的主节点;
所述新的主节点读取所述变更标记后,按照所述变更类型,指令所述分布式系统中的从节点把所述第三目标节点的地址增加到本地成员列表。
<...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。