paxos:是一种一致性算法,主要用于数据一致性中,是一种基于消息传递且具有高度容错性的一致性算分。
解决的问题:如何在分布式环境中,快速准确地在集群内部对某个数据的值达成一致,并且保证不发生机器宕机或网络异常等其他异常,都不会破坏整个系统的一致性。
paxos原理:
相关概念:角色
(1)提议者proposer:进行提议的角色
(2)批准者acceptor:通知提议的角色
(3)学习者learner:感知被选定的提议
具体实现时,一个进程可能同时充当多种角色
提案proposal:最终达成一致的value就在提案中,包含编号n和内容value
法定集合性质:称超过半数的进程组成的集合为法定集合,两个法定集合必然存在非空集合,即至少有一个公共进程。
前提条件:通信是可靠的不会被篡改的,但可以存在丢失延迟问题
paxos协议流程:
(1)预提案阶段
提议者:向接受者广播预提案,附带提案的proposal_id
接受者:收到预提案后更新a_proposal_id=max(proposal_id,a_proposal_id),如果预提案的 proposal_id>a_proposal_id,接受者回复记录的接受过的proposal_id最大的提案