一种领导节点选举方法及系统与流程
- 国知局
- 2024-10-21 15:08:08
本发明涉及区块链共识算法,具体而言,涉及一种针对区块链raft共识算法在复杂网络环境下的领导节点选举方法及系统。
背景技术:
1、raft是一种共识算法,旨在替代paxos。它通过逻辑分离比paxos更容易理解,也被正式证明是安全的,并提供了一些额外的功能。raft提供了一种在计算系统集群中分布状态机的通用方法,确保集群中的每个节点都同意一系列相同的状态转换。
2、raft共识算法中,节点有以下角色:
3、●leader:领导者,其负责和客户端通信,接收来自客户端的命令并将其转发给follower;
4、●follower:跟随者,其一丝不苟的执行来自leader的命令;
5、●candidate:候选者,当follower长时间没收到leader的消息就会揭竿而起成为候选者,抢夺成为leader的资格;
6、现有技术中,在大量节点组成的区块系统中,特别是中小企业用户,受限于自身硬件条件的制约,可能存在有些节点出现系统资源不足,网络i/o限制,或是其中两个节点无法进行p2p互通。这会导致个别节点任期超时触发重新选举,甚至频繁触发leader选举流程,特别是弱网环境下,可能导致整个区块链网络不可用;更有甚者出现双leader或多leader的情况,这在raft共识算法中称为脑裂现象。由于区块链的不可篡改性,严重时,可能逐步导致各个节点成为故障节点,永远无法继续与其它节点达成共识,直至整个区块系统瘫痪,无法继续使用,并且不可逆转和修复。
7、针对现有技术中频繁触发leader选举流程,导致整个区块链网络不可用,更有甚者出现双leader或多leader的情况,严重时,会导致整个区块系统瘫痪的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本发明实施例中提供一种领导节点选举方法及系统,以解决现有技术中频繁触发leader选举流程,导致整个区块链网络不可用,更有甚者出现双leader或多leader的情况,严重时,会导致整个区块系统瘫痪的问题。
2、为达到上述目的,一方面,本发明提供了一种领导节点选举方法,该方法包括:s1、非领导节点根据计时器是否超时广播选举消息;s2、各节点接受到选举请求进行处理并回复响应消息;所述响应消息包括:拒绝消息和同意消息;s3、候选节点接受到响应消息后根据响应消息统计获票总数,并根据获票总数判断是否可成为领导节点;若是,向其它所有节点广播心跳消息;s4、其它所有节点接受到心跳消息后,根据收到的新领导节点的任期使旧领导节点下台并存储新领导节点信息。
3、可选的,所述非领导节点包括:跟随节点和候选节点;所述s1包括:s11、若当前节点为跟随节点,检查当前节点来自领导节点的心跳时间是否超时,若未超时,则依然为跟随节点并且不广播选举消息;若超时,则切换节点状态为候选节点;并进入s12;若当前节点为候选节点,检查当前节点的计时器是否超时,若未超时,则依然为候选节点并且不广播选举消息;若超时,且没有接到多数节点的同意投票以及其他节点成为领导节点的消息,则依然为候选节点并进入s12;s12、更新选举任期为当前选举任期加1,并且更新选举时间为当前系统时间;广播选举消息,进行新一轮的领导节点选举。
4、可选的,所述s2包括:s21、若当前节点为领导节点,则直接拒绝选举请求并回复拒绝消息;若当前节点为候选节点,并且当前节点的选举任期不低于广播选举消息的候选节点的请求任期,则直接拒绝选举请求并回复拒绝消息;否则,切换节点状态为跟随节点,并进入s22;若当前节点为跟随节点,并且当前节点在计时器内正常接受领导节点的心跳,则直接拒绝选举请求并回复拒绝消息;或当前节点的选举任期不低于广播选举消息的候选节点的请求任期,则直接拒绝选举请求并回复拒绝消息;否则,进入s22;s22、更新选举任期为当前的请求任期,并且更新选举时间为当前系统时间;同意选举并回复同意消息。
5、可选的,所述s3包括:s31、若响应消息为拒绝消息,则进入s32;若响应消息为同意消息,则进入s33;s32、当判断为领导节点发送的拒绝消息,则结束选举,并切换节点状态为跟随节点;当判断为候选节点发送的拒绝消息时,若对端节点的选举任期高于当前节点的选举任期,则结束选举,并切换节点状态为跟随节点,同时更新当前节点的选举任期为对端节点的选举任期;若对端节点的选举任期不高于当前节点的选举任期,则不处理此消息;s33、将获票数加1;s34、当统计完获票总数后,判断获票总数是否大于等于n/2+1,其中n为节点总数;若不满足条件,则仍为候选节点并继续进行下一任选举;若满足条件,则切换节点状态为领导节点,并更新工作任期为此时胜选的选举任期,向其它所有节点广播心跳消息,以打断其他所有节点的选举流程。
6、可选的,所述s4包括:s41、其它所有节点接受到心跳消息后,若当前节点为跟随节点,其收到的新领导节点的任期比依然向当前节点发送心跳消息的旧领导节点的任期高,则迫使旧领导节点下台,并进入s42;若当前节点为领导节点,其当前节点的任期比收到的新领导节点的任期低,则代表当前节点为旧领导节点,则当前节点被动下台,,切换节点状态为跟随节点,并进入s42;若当前节点为候选节点,则直接结束选举流程,并切换节点状态为跟随节点,并进入s42;s42、存储新领导节点的信息;更新任期为此时新领导节点的工作任期。
7、另一方面,本发明提供了一种领导节点选举系统,该系统包括:广播选举单元,用于非领导节点根据计时器是否超时广播选举消息;选举请求处理单元,用于各节点接受到选举请求进行处理并回复响应消息;所述响应消息包括:拒绝消息和同意消息;响应消息处理单元,用于候选节点接受到响应消息后根据响应消息统计获票总数,并根据获票总数判断是否可成为领导节点;若是,向其它所有节点广播心跳消息;心跳消息处理单元,用于其它所有节点接受到心跳消息后,根据收到的新领导节点的任期使旧领导节点下台并存储新领导节点信息。
8、可选的,所述非领导节点包括:跟随节点和候选节点;所述广播选举单元包括:超时判断子单元,用于若当前节点为跟随节点,检查当前节点来自领导节点的心跳时间是否超时,若未超时,则依然为跟随节点并且不广播选举消息;若超时,则切换节点状态为候选节点;并进入广播选举子单元;若当前节点为候选节点,检查当前节点的计时器是否超时,若未超时,则依然为候选节点并且不广播选举消息;若超时,且没有接到多数节点的同意投票以及其他节点成为领导节点的消息,则依然为候选节点并进入广播选举子单元;广播选举子单元,用于更新选举任期为当前选举任期加1,并且更新选举时间为当前系统时间;广播选举消息,进行新一轮的领导节点选举。
9、可选的,所述选举请求处理单元包括:选举请求判断处理子单元,用于若当前节点为领导节点,则直接拒绝选举请求并回复拒绝消息;若当前节点为候选节点,并且当前节点的选举任期不低于广播选举消息的候选节点的请求任期,则直接拒绝选举请求并回复拒绝消息;否则,切换节点状态为跟随节点,并进入同意选举子单元;若当前节点为跟随节点,并且当前节点在计时器内正常接受领导节点的心跳,则直接拒绝选举请求并回复拒绝消息;或当前节点的选举任期不低于广播选举消息的候选节点的请求任期,则直接拒绝选举请求并回复拒绝消息;否则,进入同意选举子单元;同意选举子单元,用于更新选举任期为当前的请求任期,并且更新选举时间为当前系统时间;同意选举并回复同意消息。
10、可选的,所述响应消息处理单元包括:响应消息判断子单元,用于若响应消息为拒绝消息,则进入节点判断处理子单元;若响应消息为同意消息,则进入票数统计子单元;节点判断处理子单元,用于当判断为领导节点发送的拒绝消息,则结束选举,并切换节点状态为跟随节点;当判断为候选节点发送的拒绝消息时,若对端节点的选举任期高于当前节点的选举任期,则结束选举,并切换节点状态为跟随节点,同时更新当前节点的选举任期为对端节点的选举任期;若对端节点的选举任期不高于当前节点的选举任期,则不处理此消息;票数统计子单元,用于将获票数加1;票数判断子单元,用于当统计完获票总数后,判断获票总数是否大于等于n/2+1,其中n为节点总数;若不满足条件,则仍为候选节点并继续进行下一任选举;若满足条件,则切换节点状态为领导节点,并更新工作任期为此时胜选的选举任期,向其它所有节点广播心跳消息,以打断其他所有节点的选举流程。
11、可选的,所述心跳消息处理单元包括:下台子单元,用于其它所有节点接受到心跳消息后,若当前节点为跟随节点,其收到的新领导节点的任期比依然向当前节点发送心跳消息的旧领导节点的任期高,则迫使旧领导节点下台,并进入存储信息子单元;若当前节点为领导节点,其当前节点的任期比收到的新领导节点的任期低,则代表当前节点为旧领导节点,则当前节点被动下台,切换节点状态为跟随节点,并进入存储信息子单元;若当前节点为候选节点,则直接结束选举流程,并切换节点状态为跟随节点,并进入存储信息子单元;存储信息子单元,用于存储新领导节点的信息;更新任期为此时新领导节点的工作任期。
12、本发明的有益效果:
13、本发明提供了一种领导节点选举方法及系统,其中,该方法包括:s1、非领导节点根据计时器是否超时广播选举消息;s2、各节点接受到选举请求进行处理并回复响应消息;所述响应消息包括:拒绝消息和同意消息;s3、候选节点接受到响应消息后根据响应消息统计获票总数,并根据获票总数判断是否可成为领导节点;若是,向其它所有节点广播心跳消息;s4、其它所有节点接受到心跳消息后,根据收到的新领导节点的任期使旧领导节点下台并存储新领导节点信息。本发明的方法使用选举任期与工作任期分离的方式,实现领导节点任期的保持,在局部发生候选节点触发选举时,无法撼动领导节点的领导地位。可有效防止局部节点中新领导节点选举打断当前领导节点的正常工作,并且可以防止出现多个领导节点。
本文地址:https://www.jishuxx.com/zhuanli/20241021/320654.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表