共识算法
共识是分布式系统容错的基本问题。共识涉及多个服务器数据达成一致。一旦集群中的所有节点就数据做出有效决定之后,该决定就是最终的决定。当大多数节点(超过半数支持)则集群数据进行改变。所以,如过有5台服务器,这当中如果挂掉了2台,那么集群照样运行。但如果有更多的服务器挂掉,集群就会停止运行。
什么是Raft
首先,容错和性能方面与 Paxos
相当,不同之处在于它被分解为相对独立的子问题,并且简单明了的解决了实际系统所需的所有主要部分。
相关术语介绍
在 Raft
中,所有的角色分为三类:
- Leader (领袖)
- Follower (群众)
- Candidate (候选人)
- Term (任期)
类似于民主社会,领袖由民众选出。集群中所有的参与者都是群众。最初没有领袖,此时,开始发起一轮选举。与现实民主社会一致,所有参与者都是候选人(Candidate)
所有参与者都可以参与选举,任何人都可以投票给其他参与者(包括自己),任何参与者都可以接受投票。一轮投票过后,得票数超过半数者成为新一任Leader
,领袖开始这一届任期 (Term)
,其他的参与者变为Follower
,从Leader
处同步数据。
Leader 选举过程
假如,现在集群中有 A、B、C 三个节点。最开始三个节点都是