【课程报告七】了解Raft算法的准备

        第二篇的论文是In Search of an Understandable Consensus Algorithm,是关于Raft算法的。有了前车之鉴,先看文章肯定会懵。所以打算先自己先去了解一下这个算法。

·        首先去百度百科了解一下什么是Raft:Raft是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。相比传统的Paxos算法,Raft将大量的计算问题分解成为了一些简单的相对独立的子问题。相比于传统的一致性算法Paxos,Raft有一些自己的独特的特性。比如增加了强领导性,优化了领导的选举过程,在成员发生变化之后依然能够很好的进行工作。

也就是说Raft似乎在选举杰出者方面有着较为优秀的机制。Raft比Paxos更容易理解,也为构建实用的系统提供了更好的基础。为了增强可理解性,Raft分离了共识的关键元素,如领导者选举、日志复制和安全性,并且它强制了更强的一致性,以减少必须考虑的状态的数量。一项用户研究的结果表明,Raft对学生来说比Paxos更容易学习。Raft还包括一个新的机制来改变集群成员,它使用重叠多数来保证安全性。且Paxos只是一些基础的理论,而Raft可以在工业上实现。

【课程报告七】了解Raft算法的准备_第1张图片

         那么简单的Raft流程是怎样的呢?

        这里我找到一个经典介绍Raft的网址供参考:

        Raft (thesecretlivesofdata.com)

        首先, Raft将节点分为三种状态:Leaders(领导者)、Followers(追随者)、Candidate(候选人)。节点可以处于三种状态的其中一种。所有的节点都以追随者状态开始。

领导选举:

        如果追随者没有收到领导者的消息,那么他们就可以成为候选人。候选人会向其他节点发送消息,请求投票。如果候选人获得大多数节点的选票,则该候选人将成为领导者。

        在 Raft 中,有两个控制选举的超时设置。首先是选举超时。选举超时是追随者等待成为候选人的时间量,随机化为 150 毫秒到 300 毫秒之间。选举超时后,追随者成为候选人并开始新的选举。候选人节点会将投票请求发给其他节点,如果接收节点在此期限内尚未投票,则它将投票给候选人并重置其选举超时。一旦候选人获得多数票,它就成为领导者。领导者会在间隔固定时间向其他节点发送附加消息,形象地成为“心跳”,追随者会回复这些“心跳”。如果追随者在选举超时期间没收到“心跳”,选举超时不会重置,进而成为候选人。

日志复制:

        客户端的请求会经过领导者,领导者在将请求复制给其他节点。当大多数节点发回确认复制的消息,领导者向节点发送提交的消息达到共识。

        简单的Raft过程如上所述,更为复杂的情况我会边看论文边提出。        

你可能感兴趣的:(分布式)