Raft 与 Paxos的区别

Raft

Raft概述

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

关于Raft一致性协议的概要

Raft一致性算法的保证

关于Raft一致性协议的概要

Raft特色

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

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

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

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

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

参考

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

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

一个归纳性的中文PPTspa

中文翻译.net

Paxos

概述

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

paxos两阶段提交

        整体说来,paxos就是经过两个阶段肯定一个决议:
Phase1:肯定谁的编号最高,只有编号最高者才有权利提交proposal;
Phase2:编号最高者提交proposal,若是没有其余节点提出更高编号的proposal,则该提案会被顺利经过;不然,整个过程就会重来。

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

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

相关文章
相关标签/搜索