Raft协议 *

总结 #

从本质上说,Raft 算法是通过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致.

raft协议

Raft: leader + term + peers

Raft-分区脑裂(成员变更的问题) #

raft-patition
分区脑裂[非majority有uncommited log、 term1]

raft-patition-1
分区脑裂[majority可以同步log、 term2]

Raft-领导者选举 #

raft选举-步骤1-Election Timeout

raft选举-步骤2

raft选举-步骤3

raft选举-步骤4

raft选举-步骤5

Raft-复制日志 #

  • 副本数据是以日志的形式存在的,其中日志项中的指令表示用户指定的数据。
  • Raft 是通过以领导者的日志为准,来实现日志的一致的。
  • 在 Raft 中日志必须是连续的
  • 日志完整性最高的节点才能当选领导者

参考 #

  1. raft 动画 good
  2. The Raft Consensus Algorithm good 动画 各种系统实现 未
  3. Raft Distributed Consensus Algorithm Visualization 动画 未
  4. Raft对比ZAB协议
  5. raft协议和zab协议有啥区别?
  6. 一张图看懂Raft
  7. Raft 为什么是更易理解的分布式一致性算法
  8. 分布式协议与算法实战 - 07 | Raft算法(一):如何选举领导者? 韩健 ***
  9. 分布式协议与算法实战 - 08丨Raft算法(二):如何复制日志?.pdf 韩健 ***
  10. Raft 分布式系统一致性协议探讨 腾讯 未

  • 论文
  1. Raft一致性算法论文译文
  2. In Search of an Understandable Consensus Algorithm(Extended Version) raft