分布式一致性算法Raft!

Raft 是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。

三类角色:

Leader(领袖),Follower(群众),Candidate(候选人)

选举过程

一个最小的 Raft 民主集群需要 三个参与者ABC),这样才可能投出多数票。

初始状态 ABC 都是 Follower,然后发起选举这时有 三种 可能的情形发生。

下图中前二种都能选出 Leader,第三种则表明 本轮投票无效Split Votes)。

对于第三种,每方都投给了自己,结果没有任何一方获得多数票。

之后 每个参与方 随机休息一阵(Election Timeout)重新发起投票直到一方获得多数票。

这里的关键就是随机 timeout,最先从 timeout 中恢复发起投票的一方向还在 timeout 中的另外两方 请求投票,这时它就只能投给自己,导致很快达成一致。

选出 Leader 后,Leader 通过 定期 向所有 Follower 发送 心跳信息 维持其统治。

Follower 一段时间未收到 Leader心跳,则认为 Leader 可能已经挂了,然后再次发起 选举 过程。

image-20231012113713037