Raft 与 Paxos的区别
cloud-coder 发表于1年前
Raft 与 Paxos的区别
  • 发表于 1年前
  • 阅读 991
  • 收藏 6
  • 点赞 0
  • 评论 0

330元/年抢阿里云香港云服务器,节省80%出海成本>>>   

摘要: 针对Raft 与 Paxos的区别进行简单梳理,以便以后使用

Raft

Raft概述

        Raft一致性算法用于保证在分布式的条件下,所有的节点可以执行相同的命令序列,并达到一致的状态。这类的问题可以归结为“Replicated state machines”问题。

关于Raft一致性协议的概要

Raft一致性算法的保证

关于Raft一致性协议的概要

Raft特点

        相比于Paxos,Raft最大的特点就是可理解性。相信读过Paxos论文的人应该对此深有体会。

Raft把一致性问题,分解成三个比较独立的子问题,并给出每个子问题的解决方法:

选举:描述Raft是如何选择一个leader的,这个部分很受容易理解了。

日志复制:描述Raft的leader是如何把日志复制到集群的各个节点上的。

安全性:描述Raft是如何保证“State Machine Safety Property”。

参考

官方资源(包括了论文、各个语言的实现、一些学习视频)

根据Raft论文整理的一个中文文章

一个概括性的中文PPT

中文翻译

Paxos

概述

Paxos 协议是一个解决分布式系统中,多个节点之间就某个值(提案)达成一致(决议)的通信协议。它能够处理在少数派离线的情况下,剩余的多数派节点仍然能够达成一致

paxos两阶段提交

        总体说来,paxos就是通过两个阶段确定一个决议:
Phase1:确定谁的编号最高,只有编号最高者才有权利提交proposal;
Phase2:编号最高者提交proposal,如果没有其他节点提出更高编号的proposal,则该提案会被顺利通过;否则,整个过程就会重来。

        你编号高,我比你更高,反复如此,算法永远无法结束,这叫活锁。FLP Impossibility已经证明,在异步通信中不存在任何一致性算法,活锁便是Paxos无法解决的硬伤。

        Phase1,Phase2非常像2PC中的两个阶段,因此paxos本质上是多个2PC交替执行!
另外,即使你明白了,在实现时会知道有多难,工程实现与理论差距很大!

标签: paxos raft
共有 人打赏支持
粉丝 226
博文 187
码字总数 134554
×
cloud-coder
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: