Paxos算法不容易实现,Raft算法是对Paxos算法的简化和改进。
Raft算法将一致性问题分解为两个的子问题,Leader选举(Leader election)和日志复制(Log Replication)。
Raft协议的节点有三种状态:Leader、Follower、Candidate。
Leader:所有对系统的修改都会先经过leader。每个修改操作都会写一条日志,然后将日志复制到所有Follower节点,多数Follower节点响应时才提交日志,然后通知Follower节点提交日志,这个过程叫做Log Replication。
Follower:所有节点都以follower的状态开始,如果没收到Leader的心跳则会变成Candidate状态。
Candidate:发起投票,如果得到多数节点的选票则成为Leader,这个过程叫做Leader election。等待超时会重新发起投票,竞选失败(收到了Leader的心跳)则会变成Follower状态。