Raft是维持分布式环境下数据
的一致性的协议
Leader election
Safety
Log replicate
类似选民
完全被动
类似proposer律师
可以被选为新的
leader
一个candidate收到超
过半数的投票则变成
leader
处理所有客户端交互,
日志复制
一般一次只有一个新
的leader
所有的节点开始都处于
follower状态
Node a
Term: 0
Node b
Term: 0
Node c
Term: 0
follower超过时间阈值
后变成candidate
Node a
Term: 1
Vote count: 1
Vote for me
Vote for me
Node b
Term: 0
Node c
Term: 0
其他服务器收到投票请求
后投票
Node a
Term: 1
Vote count: 3
Node b
Term: 1
Node c
Term: 1
OK
OK
本过程如果有一个follower宕机,candidate可以选自己,
只要票数超过N/2 + 1,candidate就可以成为leader
成为leader后向follower
发送AppendEntries
Node a
Term: 1
AppendEntries
AppendEntries
Node b
Term: 1
Vote for: a
Node c
Term: 1
Vote for: a
通过heartbeat通信,直到
某follower成为candidate
Node a
Term: 1
heartbeat
heartbeat
q
Node b
Term: 1
leader: a
Node c
Term: 1
leader: a