Raft 与 Paxos的区别

為{幸葍}努か 提交于 2019-12-05 00:40:01

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交替执行!
另外,即使你明白了,在实现时会知道有多难,工程实现与理论差距很大!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!