Raft协议简介
Raft 是一种为了管理复制日志的一致性协议
复制状态机概念,复制状态机是指每个状态机或系统如果初始状态一致,然后接受的改变状态的命令也一致,最后产生的结果状态也是相同。
raft 选主原理
image.png
- 所有node先是follower
- follower等待一个随机时间变为candidate,然后candidate发起投票,如果获得多数投票的节点,则被选为leader
- 如果没有获得多数投票,则term任期加一
- leader 获得成功后,会发送heartbeat保持leader地位
- 如果leader失去多数follower的heartbeat响应,则退回follower,重新触发leader选举
raft 日志复制
image.png
- 客户端向leader发送set请求
- leader在日志模块记录下set日志
- leader把这个日志复制到follower节点
- follower节点返回复制结果
- leader获得多数复制成功后,开始commit这个日志
- leader 给follower发送commit 日志请求
- 大部分节点都commit成功后,leader apply这个日志操作,leader给客户端发送success