[关闭]
@zhangnian88123 2016-08-30T08:33:49.000000Z 字数 1527 阅读 2456

Raft学习笔记

概念

Raft是一种协议,用于协调分布式环境下的多个节点,使它们到达最终一致性状态,比如用于MongoDB集群的数据复制。

Raft协议下的节点有三种状态,任何一个节点必定处于其中一种状态:

术语

选举规则

选举时机

阶段

状态机

状态机

状态转换过程:

  1. 所有节点启动后处于Follower

  2. 因为启动之后没有Leader,因此收不到Leader发送的心跳消息,所以选举超时器(election timeout)会超时,最先超时的Follower进入Candidate,开始一次新的选举,并为自己投上一票

  3. 处于Candidate的节点如果收到大多数的赞同票,则成为Leader;当极端情况下出现平票时,保持Candidate状态并在一段超时时间后(election timeout)重新开始一轮新的选举;如果此时发现了新的Leader,则恢复成Follower

  4. 如果一个Candidate或者Leader发现自己的term过期了,那么他会恢复成Follower

改进

参考资料

Raft论文

Raft动画演示

MongoDB 中的Raft 一致性协议

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注