Paxos协议

背景

该协议是解决分布式数据一致性的问题,使得多个节点上对于某个提案达成一致。

协议交互过程

协议包含三个角色

1 提案发起者 Proposer

2 接受者 Accepter

3 学习者 learner

协议分为两个阶段

阶段一:prepare

1 发起者向接受者发送prepare 请求,带上提案的版本号n,提案的值为v, 这个版本号是全局唯一,可以用时间戳加上节点编号超时。

2 接受者接到请求

  A 如果版本号比之前批准的版本号小,则拒绝处理,结束本次批准过程。

  B 从已处理的请求中找出上一次批准的版本号和提案的值。如果是首次则返回ok

阶段二: accept

1 提案者接受到接受者返回的预处理响应,主要有以下几种情况

  A 回复数量符合多数派,均返回ok,那么说明认可这个提案,接着可以发起accept 指令,提案版本为n,值为v

B 回复数量符合多数派,到返回的数据有不同的版本和值。那么需要统计出超过半数的那个版本和值x, 接着再以版本为n,值为x向接受者发起accept请求。如果这时的返回值符合多数派则提案成功,否则将提案的版本加一,在从prepare 阶段重新开始。

C 回复的数量不符合多数派,那么版本号加一,从prepare阶段重新开始。

你可能感兴趣的:(Paxos协议)