我正在查看paxos算法的提议阶段的伪代码:https://www.cs.rutgers.edu/~pxk/417/notes/paxos.html
did I receive PROMISE responses from a majority of acceptors?
if yes
do any responses contain accepted values (from other proposals)?
if yes
val = accepted_VALUE // value from PROMISE message with the highest accepted ID
if no
val = VALUE // we can use our proposed value
send PROPOSE(ID, val) to at least a majority of acceptors
如果其中一个对等体之前已经接受了一个值(accepted_VALUE
),那么提出者试图提出的值(VALUE
)会发生什么情况?
据我所知,它看着伪代码,它被丢弃了吗?这看起来像是信息的丢失..。
发布于 2020-12-09 01:54:34
当接受者回复一个值时,提出者确实会丢弃它的值。
我是这样想的: Paxos是一个协作协议,很像一个等待自由锁自由算法。提出者的工作不是确保它的价值被选择,而是帮助这个过程进行,而不是。当一个提出者看到它被另一个提出者击败时,它有助于复制其他提出者。
类似地,您可以将其视为提议人正在继续先前的、可能已经死亡的提议人的工作。
您可以在更简单的非共识Attiya/Bar-Noy/Dolev (ABD)协议中更清楚地看到这一点。即使在ABD中读取时,"proposer“也会重写该值,以确保该值分布在整个系统中。
ABD:“在消息传递系统中稳健地共享内存”,H. Attiya,A. Bar-Noy和D. Dolev,1995
https://stackoverflow.com/questions/65175918
复制相似问题