什么是Paxos算法

Paxos算法是Lesile Lamport提出的一种基于消息传递且具有高度容错特性的一致性算法。
分布式系统中的节点通信存在两种模型: 共享内存和消息传递。
基于消息传递通信模型的分布式系统,不可避免会发生进程变慢被杀死,消息延迟、丢失、重复等问题,Paxos算法就是在存在以上异常的情况下仍能保持一致性的协议。


Paxos算法使用一个希腊故事来描述,在Paxos中,存在三种角色,分别为
Proposer(提议者,用来发出提案proposal), 
Acceptor(接受者,可以接受或拒绝提案), 
Learner(学习者,学习被选定的提案,当提案被超过半数的Acceptor接受后为被批准)。
下面更精确的定义Paxos要解决的问题: 
1、决议(value)只有在被proposer提出后才能被批准 
2、在一次Paxos算法的执行实例中,只批准(chose)一个value 
3、learner只能获得被批准(chosen)的value


所有事务请求必须由一个全局唯一的服务器来协调处理,这样的服务器被称为leader服务器,而余下的其他服务器则成为follower服务器。
leader服务器负责将一个客户端事务请求转换成一个事务proposal,并将该proposal分发给集群中所有的follower服务器。
之后leader服务器需要等待所有follower服务器的反馈,一旦超过半数的follower服务器进行了正确的反馈后,那么leader就会再次向所有的follower服务器分发commit消息,要求其将前一个proposal进行提交。


ZAB协议需要确保那些已经在leader服务器上提交的事务最终被所有服务器都提交。
ZAB协议需要确保丢弃那些只在leader服务器上被提出的事务。
如果让leader选举算法能够保证新选举出来的leader服务器拥有集群中所有机器最高编号(ZXID)的事务proposal,那么就可以保证这个新选举出来的leader一定具有所有已经提交的提案。


ZAB两种基本的模式:崩溃恢复和消息广播。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章