一致性协议(Consensus Algorithm)

1、多数派

2、两阶段Accept

第一阶段:Propose阶段。Proposers向Acceptors发出Propose请求, Acceptors针对收到的Propose请求进行Promise承诺

第二阶段:Accept阶段。收到多数派Acceptors承诺的Proposer,向 Acceptors发出Accept请求,Acceptors针对收到的Accept请求进行接收 处理

第三阶段(可优化):Commit阶段。发出Accept请求的Proposer,在收 到多数派Acceptors的接收之后,标志着本次Accept成功。向所有 Acceptors追加Commit消息

--------------------------------

经典Paxos

特点:一次实例需要两阶段消息达成(一阶段抢leader、二阶段选定值);

消息数:2f+1个节点一次实例需要(2f+1) *2*2+2次消息通讯

缺点:With multiple concurrent proposers, conflicts and restarts are likely (higher load → more conflicts),性能低、活锁可能


Paxos协议族介绍

Paxos算法的变种不是非此即彼的关系,在不冲突的情况下,可以组合使用

Multi-Paxos

特点:一个Leader执行多次实例;(先经典,然后租约维持)

消息数:2f+1个节点一次实例需要(2f+1) *2+2次消息通讯

Raft

Paxos的一种简化:有主、日志单向复制

通过投票选取主节点leader(任期、心跳,超半数、日志长度)

集群以Leader的日志为准,复制到其他节点,其他节点无条件跟随

通过日志连续无空洞确保集群日志的一致性

超半数的节点接收到的日志可提交应用

已提交的日志不会丢失

在2N+1个节点集群中,最多容忍N个节点失效


协议对比



请使用浏览器的分享功能分享到微信等