multi-paxos和raft区别

来源:互联网 发布:简单bbs论坛源码php 编辑:程序博客网 时间:2024/06/06 07:26

什么是raft?

Raft论文中都做了详细的描述,语言清晰,我这里仅做下认为非常重要的点的记录:

  1. 数据流向是由leader流向follower的,follower和leader不一致,以leader为准修改follower本地日志

2.leader的选举中,如果follower发现candidate的日志比本地日志少,follower不投票给candidate,这就保证了选举出的leader覆盖了大多数follower的日志的

  1. leader发送commit日志,若follower发现和leader日志不同步,必须先补全缺少的日志

multi-paxos和raft区别

raft 是基于对multi paxos 的两个限制形成的:

  • 发送的请求的是连续的, 也就是说raft 的append 操作必须是连续的. 而paxos 可以并发的. (其实这里并发只是append log 的并发提高, 应用的state machine 还是必须是有序的)
  • 选主是有限制的, 必须有最新, 最全的日志节点才可以当选. 而multi-paxos 是随意的 所以raft 可以看成是简化版本的multi paxos(这里multi-paxos 因为允许并发的写log, 因此不存在一个最新, 最全的日志节点, 因此只能这么做. 这样带来的麻烦就是选主以后, 需要将主里面没有的log 给补全, 并执行commit 过程)

资料

  • 比较raft ,basic paxos以及multi-paxos【https://zhuanlan.zhihu.com/p/25664121】
  • 谈谈paxos, multi-paxos, raft【https://baotiao.github.io/2016/05/05/paxos-raft/】
  • 快速理解一致性协议 raft【https://zhuanlan.zhihu.com/p/28560167】