前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Paxos算法和Raft算法之间的联系是什么?优势在哪?

Paxos算法和Raft算法之间的联系是什么?优势在哪?

作者头像
并发笔记
发布2022-11-21 20:18:23
9320
发布2022-11-21 20:18:23
举报
文章被收录于专栏:并发笔记并发笔记

以下内容选自《深入理解分布式共识算法》一书,本书尚处于出版阶段,预计12月底出版,敬请关注。

两者相同之处:

(1) 都是共识算法,引用场景以及所解决的问题是一致的。

(2) 两者都采用“多数派”决策的思想进行协商。

(3) 两者都能友好的支持容错。

两者不同之处:

(1) Raft引入强Leader模型,规避了Basic Paxos的活锁的问题,Multi Paxos也仅仅降低了活锁的概率。

(2) 可用性,Raft引入强Leader,自然也导致了可用性的降低,在Leader选举期间,Raft将不可用。而Multi Paxos尽管也引入Leader,但是当Leader故障时,客户端访问另一个Leader即可,服务仍然是可用的。

(3) 协商性能,Basic Paxos加上提交操作(learn阶段或者comfirm请求)固定需要三个阶段(Prepare+Accept+Comfirm)才能提交一个提案,Multi Paxos在大多数情况下优化成两阶段(Accept+Confirm)提交,但是达到两阶段提交的条件仍然是需要进行Prepare阶段。而Raft抽象出选举阶段(类比Prepare阶段),并通过心跳机制替代了提交阶段(类比Confirm),实现了真正一阶段提交。

(4) 日志连续性,Paxos允许乱序提交,同样允许存在空洞日志。而Raft通过Leader严格规定了日志项的连续性。换句话说,Paxos只保证了每个提案(日志项)达成共识的安全性,而Raft还保证了日志项的连续性,这一特性隐含了两个成员之间,相同日志索引且term相同,那么该日志项之前所有日志项也必然相同。

(4) 非事务请求,Multi Paxos尽管可以让Leader为每个提案(日志项)记录Confirm日志,但是对于未记录这一Confirm日志的提案,必须重新走一遍Paxos流程,才能知道该提案是否已达成共识。而Raft在日志连续的特性上,也要求了日志项提交的顺序。因此,Raft只需要明确committedIndex,即可推测在此之前所有日志项都已达成共识。

(5) 日志压缩,Paxos没有明确这一细节,但是在Paxos的工程实现中往往也会采用类似Raft提到的快照方式,进行日志压缩。

(6) 日志存储,Paxos并不要求每个成员拥有完整的数据,而Raft要求成员加入集群时先和Leader完成数据对齐。

(7) 崩溃恢复,因为Paxos的灵活性,这一点在Paxos中并没有那么重要,由于每个成员的对等性,成员崩溃后重启即可。而Raft成员崩溃后,再加入集群时,需要以Leader的数据为基准恢复数据,然后才可加入集群。

综上所述,两者各存优劣。

Paxos,更加灵活,可用性更好,但是协商效率更低(活锁、三阶段)

Raft,可用性降低,协商效率更好,另外Raft算法更加完整,对非事务请求、日志压缩、崩溃恢复等模块都有明确的实现标准。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 并发笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两者相同之处:
  • 两者不同之处:
  • 综上所述,两者各存优劣。
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档