分布式一致性算法Raft!
分布式一致性算法Raft!
月伴飞鱼Raft 是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。
三类角色:
Leader(领袖),Follower(群众),Candidate(候选人)
选举过程
一个最小的 Raft
民主集群需要 三个参与者(A
、B
、C
),这样才可能投出多数票。
初始状态
ABC
都是Follower
,然后发起选举这时有 三种 可能的情形发生。下图中前二种都能选出
Leader
,第三种则表明 本轮投票无效(Split Votes
)。对于第三种,每方都投给了自己,结果没有任何一方获得多数票。
之后 每个参与方 随机休息一阵(
Election Timeout
)重新发起投票直到一方获得多数票。这里的关键就是随机
timeout
,最先从timeout
中恢复发起投票的一方向还在timeout
中的另外两方 请求投票,这时它就只能投给自己,导致很快达成一致。选出
Leader
后,Leader
通过 定期 向所有Follower
发送 心跳信息 维持其统治。若
Follower
一段时间未收到Leader
的 心跳,则认为Leader
可能已经挂了,然后再次发起 选举 过程。