paxos算法

Paxos算法中的角色

1、Proposer 发起提案者
2、Acceptor 接受提案者
3、Learners 学习提案者

提案内容

1、提案编号N
2、提案的内容V

Paxos算法描述

阶段一(prepare):

(a) Proposer选择一个提案编号N,然后向半数以上的Acceptor发送编号为N的Prepare请求。
(b)如果Proposer收到半数以上Acceptor对其发出的编号为N的Prepare请求的响应,那么就进入第二阶段

阶段二(accept)

(a) Proposer发送一个针对[N,V]提案的Accept请求给半数以上的Acceptor。
注意:V就是prepare阶段收到的响应中编号最大的提案的value,如果响应中不包含任何提案,那么V就由Proposer自己决定。

(b)超过半数的Acceptor接受提案,则确定结果,否则,在次进入prepare重新执行
注意:如果Acceptor收到一个编号为N的提案的Accept请求,只要该Acceptor没有对编号大于N的Prepare请求做出过响应,它就接受该提案,否则不接受。

阶段三(learn)

Proposer在收到多数Acceptors的Accept之后,标志着本次Accept成功,决议形成,将形成的决议发送给所有Learners。

Acceptor如何响应编号为N的prepare请求?

情况一:之前从未接受过prepare请求,此时接受此提议,并返回结果
情况二:之前接受过prepare请求,但是编号都小于N,此时返回小于N的最大编号的提议
情况三:之前接受过prepare请求,且响应过大于N的编号,该Acceptor不可能接受编号为N的提案。该Acceptor可以忽略编号为N的Prepare请求。当然,也可以回复一个error,让Proposer尽早知道自己的提案不会被接受。

Acceptor如何响应编号为N的提议?

一个Acceptor只要尚未响应过任何编号大于N的Prepare请求,那么他就可以接受这个编号为N的提案。

学习者(learner)三种学习方法

1、接受者接受了一个提议,就将该提议发给所有的服务
2、接受者接受了一个提议,就将该提议发给主learner,主learner再通知其他learner
3、接受者接受了一个提议,就将该提议发给learn集合,learn集合再通知其他learn

posted @   马崮蚂蚁哥  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示