Raft假设系统在任意时刻最多只有一个Leader,提议只能由Leader发出(强Leader),否则会影响正确性;而Multi-Paxos虽然也选举Leader,但只是为了提高效率,并不限制提议只能由Leader发出(弱Leader)。
强Leader在工程中一般使用Leader Lease和Leader Stickiness来保证:
Leader Lease:上一任Leader的Lease过期后,随机等待一段时间再发起Leader选举,保证新旧Leader的Lease不重叠。 Leader Stickiness:Leader Lease未过期的Follower拒绝新的Leader选举请求。 Raft限制具有最新已提交的日志的节点才有资格成为Leader,Multi-Paxos无此限制。
Raft在确认一条日志之前会检查日志连续性,若检查到日志不连续会拒绝此日志,保证日志连续性,Multi-Paxos不做此检查,允许日志中有空洞。
Raft在AppendEntries中携带Leader的commit index,一旦日志形成多数派,Leader更新本地的commit index即完成提交,下一条AppendEntries会携带新的commit index通知其它节点;Multi-Paxos没有日志连接性假设,需要额外的commit消息通知其它节点。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。