raft算法小结
前言
raft是一种分布式共识算法,相对于大名鼎鼎的Paxos,raft更易于理解和工程化,本人近期接触到OVSDB的cluster集群,便是基于该算法,记录一下便于后期再温习。
raft算法要求server得是奇数个,如果是偶数反而可能产生读写性能下降,甚至多个leader的“脑裂”现象。
leader选举 (leader election)
每个节点有3种状态:Follower,Leader,Candicate。
在raft算法中有两个timeout控制着选举(election),第一个就是election timeout,它是follower等待变为candinate的时间,它的时间在150-300ms之间随机产生以保证每个follower成为candinate的时间不同,进而出现一个candiante之后就会立即进行选举成为leader,而不会出现多个candinate同时进行选举的情况。

当图上B先变为candinate之后,就会开始一个election term,发送Request Vote消息给其他节点让他们来为B投票,B也会为自己投上一票。一旦candinate收到了超过一半的投票,他就变为了leader,然后就会发送Append Entries到其他节点,也就是它的followers,而followers也同样会回复Append Entries给leader,这被称为heartbeats.当follower

最低0.47元/天 解锁文章
9124

被折叠的 条评论
为什么被折叠?



