OB有问必答 | OceanBase的一致性协议为什么选择 Paxos 而不是 Raft?-阿里云开发者社区

开发者社区> OceanBase> 正文
登录阅读全文

OB有问必答 | OceanBase的一致性协议为什么选择 Paxos 而不是 Raft?

简介: “OB有问必答”是OceanBase最新上线的互动类栏目,每周围绕一个关于分布式数据库的议题为大家详细展开解答,如果你有任何感兴趣的问题,欢迎留言,我们会每周选取一个问题为大家详细解答。

分布式一致性协议(distributed consensus protocol)是迄今为止最有效的解决服务器不可靠问题的途径,因为它使得一组服务器形成一个相互协同的系统,从而当其中部分服务器故障后,整个系统也能够继续工作。而 Paxos 协议则几乎成了分布式一致性协议的代名词。

Paxos 协议有一个很大的设计假设,它要求支持多个投票,也就是数据库里的多条日志之间是可以乱序提交的,可以并行处理的。但是 Raft 协议做了一个约束,数据库的多个投票多条日志一定要按照顺序执行,只有前一个日志被确认了才能再确认后一个日志。Raft 协议给出了分布式一致性协议的一个比较简单的实现,这种简化使得 Paxos 协议走进了千家万户。

但是有得必有失,Raft 把这个约束变得更简单了以后,导致了两个问题,第一个问题是并发能力变差了。以前支持并发的提交,现在只能支持一个结束以后再进入下一个,所以它的性能变差了。第二个是可用性的问题。如果采用 Paxos 协议,当一台机器新上线的时候很快就能提供服务,因为不需要等前面的数据确认就能提供服务,但是如果使用的是 Raft 协议,需要等前面的所有日志确认以后才能提供服务,所以说 Raft 协议存在可用性的风险。在某些场景尤其是异地部署和比较差的网络环境下是有风险的。

在所有分布式系统里分为两个阵营,一个是 Paxos 的阵营,包括 Google Spanner,OceanBase 1.0 及其之后的版本,Amazon DynamoDB 等。另一个是 Raft 阵营,包括腾讯的 TDSQL 以及一系列的开源数据库,这其中基于 MySQL 的系统基本上都是通过 Raft 协议来实现的。

无论你选择 Paxos 阵营还是 Raft 阵营,其实都各自存在利弊,只有平衡好利弊,选择最适合自己的协议才能实现产品最终希望达到的目标。

P.s. 关于分布式数据库,所有你想了解的或者感兴趣的,欢迎留言,我们会每周为大家带来一期精选问题解答。下期见!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
OceanBase
使用钉钉扫一扫加入圈子
+ 订阅

OceanBase数据库由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于 2010 年。具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系数据库、低成本等特点。至今已成功应用于支付宝及阿里巴巴全部核心业务。并从 2017 年开始服务于广泛行业客户,包括南京银行、西安银行、天津银行、苏州银行、东莞银行、常熟农商行、广东农信、中国人保等近四十家银行、保险和证券机构,以及印度最大支付公司Paytm。

官方博客
官网链接