若有收获,请记得分享和转发哦
大名鼎鼎的 Paxos 算法可能不少人都听说过,几乎垄断了一致性算法领域,在 Raft 协议诞生之前,Paxos 几乎成了一致性协议的代名词。
但是对于大多数人来说,Paxos 算法太难以理解了,而且难以实现。因此斯坦福大学的两位教授 Diego Ongaro 和 John Ousterhout 决定设计一种更容易理解的一致性算法,最终提出了 Raft 算法!
Raft 是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。
相比传统的 Paxos 算法,Raft 将大量的计算问题分解成为了一些简单的相对独立的子问题,并有着和 Multi-Paxos 同样的性能,下面我们通过动图,以后还原 Raft 内部原理。
Raft 基础
名词解释
Raft协议一共包含如下3类角色:
Leader(领袖):领袖由群众投票选举得出,每次选举,只能选出一名领袖;
Candidate(候选人):当没有领袖时,某些群众可以成为候选人,然后去竞争领袖的位置;
Follower(群众):这个很好理解,就不解释了。
然后在进行选举过程中,还有几个重要的概念:
Leader Election(领导人选举):简称选举,就是从候选人中选出领袖;
Term(任期):它其实是个单独递增的连续数字,每一次任期就会重新发起一次领导人选举;
Election Timeout(选举超时):就是一个超时时间,当群众超时未收到领袖的心跳时,会重新进行选举。
成为候选人:每个节点都有自己的“超时时间”,因为是随机的,区间值为150~300ms,所以出现相同随机时间的概率比较小,因为节点B最先超时,这时它就成为候选人。