当前位置: 首页 > 专利查询>河海大学专利>正文

基于Raft的分布式服务器集群配置方法技术

技术编号:25230680 阅读:170 留言:0更新日期:2020-08-11 23:18
本发明专利技术公开了一种基于Raft的分布式服务器集群配置方法,通过配置集群节点,对各个集群节点进行分区,修改整个服务器集群的状态,使网络分区的领导者节点将客户端的请求发送给该网络分区的其余跟随者节点,当跟随者节点将客户端的请求所包括的操作执行在本地数据库里面以后,向相应网络分区的领导者节点发送响应,当领导者节点收到相应网络分区跟随者节点的响应超过设定数量后,将客户端的请求设为提交状态,此外跟随者节点如果在选举超时时间之内没有接收到领导者节点发送的心跳检测信息,那么该跟随者节点成为候选人节点,按照相应规则使该候选人节点成为该网络分区的新任领导者节点,并更新任期号,以实现对相应分布式服务器集群的配置。

【技术实现步骤摘要】
基于Raft的分布式服务器集群配置方法
本专利技术涉及分布式信号处理
,尤其涉及一种基于Raft的分布式服务器集群配置方法。
技术介绍
在现代社会,很多时候处理一些事务需要使用很多台计算机,那么如何保证这些机器在一起运作的时候像一个整体而不相互分离隔绝就是分布式系统的一致性算法需要解决的问题。一致性并不意味着结果的正确性,而是分布式系统中的多个物理节点在经过处理后所展示的状态是否一致。现在人们普遍使用的分布式一致性算法是Paxos算法,Paxos算法从1990年提出到现在已经有三十年的时间了,期间有很多的研究者和团队试图改进Paxos算法,但是Paxos算法本身晦涩难懂,在实际系统的应用上也难以推进,必须要对其结构进行大幅度修改才能应用。所以我们迫切需要找到一种简便且易于理解的一致性算法来提升工作效率以及为以后的一致性算法的教学和推广打下基础,而本专利技术基于的Raft算法是在该种情况下由Stanford提出,意在取代Paxos算法,在Raft算法一经推出后立即得到一致性算法领域学者的重视,通过对Raft算法的不断研究和改进,越来越多的研究者和团队将一致性算法研究和应用的重点转移到了Raft算法上来。随着互联网技术的不断发展,各大互联网企业的业务量也呈现出爆发式的增长。故而,分布式架构就显得越发重要。目前,国内外的很多公司和研究机构都对分布式环境下的一致性处理方法进行了研究,现根据已有方案中应用的主要技术概括目前研究和水平如下:Basic-Paxos算法基于Paxos协议构建的系统,只需要系统中超过半数的节点在线且相互通信正常即可正常对外提供服务。它的核心实现PaxosInstance主要包括两个阶段:准备阶段(preparephase)和提议阶段(acceptphase)。Basic-Paxos算法的基本流程如下:获取一个ProposalId,为了保证ProposalId递增,可以采用时间戳+serverId方式生成;提议者向所有节点广播prepare(n)请求;接收者比较n和minProposal,如果n>minProposal,表示有更新的提议,minProposal=n;否则将(acceptedProposal,acceptedValue)返回;提议者接收到过半数请求后,如果发现有acceptedValue返回,表示有更新的提议,保存acceptedValue到本地,然后跳转1,生成一个更高的提议;到这里表示在当前paxosinstance内,没有优先级更高的提议,可以进入第二阶段,广播accept(n,value)到所有节点;接收者比较n和minProposal,如果n>=minProposal,则acceptedProposal=minProposal=n,acceptedValue=value,本地持久化后,返回;否则,返回minProposal。提议者接收到过半数请求后,如果发现有返回值>n,表示有更新的提议,跳转1;否则value达成一致。两阶段必不可少,Prepare阶段的作用是阻塞旧的提议,并且返回已经接收到的acceptedProposal。Multi-Paxos算法Paxos算法是对一个值达成一致,Multi-Paxos是连续多个PaxosInstance来对多个值达成一致,这里最核心的原因是Multi-Paxos协议中有一个Leader。Leader是系统中唯一的Proposal,在Lease租约周期内所有提案都有相同的ProposalId,可以跳过Prepare阶段,议案只有Accept过程,一个ProposalId可以对应多个Value,所以称为Multi-Paxos。选举:首先我们需要有一个Leader,其实选举的实质也是一次Paxos算法的过程,只不过这次确定的“谁是Leader”这个值。由于任何一个节点都可以发起提议,在并发情况下,可能会出现多主的情况,比如A,B先后当选为Leader。为了避免频繁选举,当选Leader的节点要马上树立自己的Leader权威(让其它节点知道它是Leader),写一条特殊日志(Start-Working日志)确认其身份。根据多数派原则,只有一个Leader的StartWorking日志可以达成多数派。Leader确认身份后,可以通过了Lease机制(租约)维持自己的Leader身份,使得其它Proposal不再发起提案,这样就进入了Leader任期,由于没有并发冲突,因此可以跳过Prepare阶段,直接进入Accept阶段。通过分析可知,选出Leader后,Leader任期内的所有日志都只需要一个网络RTT(RoundTripTime)即可达成一致。新主恢复流程:由于Paxos中并没有限制,任何节点都可以参与选举并最终成为Leader,这就无法保证新选出的Leader包含了所有日志,可能存在空洞,因此在真正提供服务前,还存在一个获取所有已提交日志的恢复过程。领导者节点向所有成员查询最大logId的请求,收到多数节点响应后,选择最大的logId作为日志恢复结束点,这里多数节点的意义在于恢复结束点包含了所有达成一致的日志,当然也可能包含了没有达成多数节点的日志。获得logId后,从头开始对每个logId逐条进行Paxos协议,因为在新主获得所有日志之前,系统是无法提供服务的。为了优化,引入了Confirm机制,就是将已经达成一致的logId告诉其它Acceptor,Acceptor写一条Confirm日志到日志文件中。那么Leader在重启后,扫描本地日志,对于已经拥有Confirm日志的Log,就不会重新发起Paxos流程。同样的,在响应客户端请求时,对于没有Confirm日志的Log,需要重新发起一轮Paxos流程。由于没有严格要求Confirm日志的位置,可以批量发送。为了确保重启时,不需要对太多已提价的Log进行Paxos流程,需要将Confirm日志与最新提交的logId保持一定的距离。性能优化:Basic-Paxos过程的一次日志确认,需要至少两次磁盘写操作(Prepare,Promise)和两次网络RTT(Prepare,Promise)。Multi-Paxos利用一阶段提交(省去Prepare阶段),将一次日志确认缩短为一个RTT和一次磁盘写操作;通过Confirm机制,可以缩短新Leader的恢复时间。为了提高性能,我们还可以实现一批日志作为一个组提交,要么成功一批,要么都不成功,这点类似于Group-Commit,通过RT换取吞吐量。在过去的十几年里,Paxos算法一直是分布式一致性领域里面的标杆,但是由于其复杂性、难以理解,故而难以在实际的商业系统中实现,这就容易使分布式服务器集群的相关配置过程变得复杂,影响配置效率。
技术实现思路
针对以上问题,本专利技术提出一种基于Raft的分布式服务器集群配置方法。为实现本专利技术的目的,提供一种基于Raft的分布式服务器集群配置方法,包括如下步骤:...

【技术保护点】
1.一种基于Raft的分布式服务器集群配置方法,其特征在于,包括如下步骤:/nS1,配置集群节点,读取管理员输入的各个集群节点IP地址;/nS2,在初始化状态,服务器集群中的节点都是处于跟随者状态时,对各个集群节点进行分区,得到多个网络分区;/nS3,在每个网络分区中随机选出一个领导者节点,等到所有网络分区的小集群都有了领导者节点以后,修改整个服务器集群的状态;/nS4,系统返回一个请求流量入口的IP地址;/nS5,客户端向服务器集群发送请求;/nS6,若整个服务器集群处于初始化状态,则返回执行步骤S2,若服务器集群不全处于初始化状态,则执行步骤S7;/nS7,在一个网络分区的集群节点中,如果客户端的请求发送到跟随者节点,则拒绝接收此请求,并重定向,返回执行步骤S5;如果客户端的请求发送到领导者节点,则接收此请求;/nS8,每个网络分区的领导者节点将客户端的请求发送给该网络分区的其余跟随者节点;/nS9,当跟随者节点将客户端的请求所包括的操作执行在本地数据库里面以后,向相应网络分区的领导者节点发送响应;/nS10,当领导者节点收到相应网络分区跟随者节点的响应超过设定数量后,将客户端的请求设为提交状态;/nS11,跟随者节点如果在选举超时时间之内没有接收到领导者节点发送的心跳检测信息,那么该跟随者节点成为候选人节点;/nS12,候选人节点先投自己一票,并向所在网络分区的其余节点发送投票请求;/nS13,收到投票请求的跟随者节点如果在该任期里没有将选票投出,则将选票投给该候选人节点;/nS14,如果候选人节点获得的选票数超过设定票数,则该候选人节点成为该网络分区的新任领导者节点,并更新任期号。/n...

【技术特征摘要】
1.一种基于Raft的分布式服务器集群配置方法,其特征在于,包括如下步骤:
S1,配置集群节点,读取管理员输入的各个集群节点IP地址;
S2,在初始化状态,服务器集群中的节点都是处于跟随者状态时,对各个集群节点进行分区,得到多个网络分区;
S3,在每个网络分区中随机选出一个领导者节点,等到所有网络分区的小集群都有了领导者节点以后,修改整个服务器集群的状态;
S4,系统返回一个请求流量入口的IP地址;
S5,客户端向服务器集群发送请求;
S6,若整个服务器集群处于初始化状态,则返回执行步骤S2,若服务器集群不全处于初始化状态,则执行步骤S7;
S7,在一个网络分区的集群节点中,如果客户端的请求发送到跟随者节点,则拒绝接收此请求,并重定向,返回执行步骤S5;如果客户端的请求发送到领导者节点,则接收此请求;
S8,每个网络分区的领导者节点将客户端的请求发送给该网络分区的其余跟随者节点;
S9,当跟随者节点将客户端的请求所包括的操作执行在本地数据库里面以后,向相应网络分区的领导者节点发送响应;
S10,当领导者节点收到相应网络分区跟随者节点的响应超过设定数量后,将客户端的请求设为提交状态;
S11,跟随者节点如果在选举超时时间之内没有接收到领导者节点发送的心跳检测信息,那么该跟随者节点成为候选人节点;
S12,候选人节点先投自己一票,并向所在网络分区的其余节点发送投票请求;
S13,收到投票...

【专利技术属性】
技术研发人员:许仁益韩立新
申请(专利权)人:河海大学
类型:发明
国别省市:江苏;32

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

1