在Paxos 协议 or Raft 协议中,阿里巴巴为什么选择了Paxos 协议?
从下图右侧可以看到前面都在提交数据 X、后面来了数据 Y,在 S3 中先执行了 P3.1,P4.5,A4.5 Y,这意味着 Paxos 协议不一定要有序,而 Raft 是有序的。Raft 协议会要求 S3 先执行 P3.1、A 3.1 X 然后再执行 P4.5,A 4.5 Y。这是 Paxos 协议和 Raft 协议最大的不同。其次,Paxos 协议有三种角色,提交者(Propose),接收者(Accept)以及 Learn。阿里巴巴自研的 RDS 对这三种角色进行了转化,Propose 叫做 Leader,指的是可读可写的数据库节点,Accept 叫做Follower,多数派,有全量的数据,可以将自己变成 Leader。还有 Logger(阿里自研角色),只负责接收日志,没有数据。Leader 和 Follower 有全量数据,Logger 只是日志接收节点,如此 CPU 和内存成本就会降低。Learn 叫做 Learner,属于观察者角色,有全量数据但没有投票权,即使 Learner 挂掉,也不会影响 Learner 多数提交。
资料来源:《数据库:从趋势到实践》,链接:https://developer.aliyun.com/topic/download?id=1113
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。