统一共识算法详解
在分布式系统中,共识算法是确保多个进程在某些值上达成一致的关键机制。统一共识(Uniform Consensus)则进一步强化了这一要求,保证无论进程是否正确,都不会出现两个进程决定不同值的情况。
1. 统一共识的基本概念
统一共识是共识的一种变体,它消除了对正确进程决策的限制,要求每个进程(无论后续是否崩溃)都决定相同的值。而之前介绍的共识算法大多无法确保统一一致性,原因在于部分进程过早做出决策,未确保其决策被足够多的进程知晓。若此类过早决策的进程崩溃,其他进程可能不得不决定不同的值。
为说明这一问题,以“Flooding Consensus”和“Hierarchical Consensus”算法为例:
- “Flooding Consensus”算法 :假设排名为 1 的进程 p 在第一轮结束时收到所有进程的消息,并决定采用自己的提案值(因其为最小值)。但 p 决策后不久崩溃,其消息未送达其他进程,剩余进程在未收到 p 的决策消息的情况下进入第二轮,很可能决定其他值。
- “Hierarchical Consensus”算法 :排名为 1 的进程 p 单方面决定自己的提案,未向其他进程发送消息,也未确保其提案被其他进程看到。若 p 决策后立即崩溃,其他进程很可能决定不同的值。
2. 故障停止模型下的统一共识算法
为解决上述问题,下面介绍两种适用于故障停止模型(fail-stop model)的统一共识算法,该模型可容忍少于 N 个故障进程(f < N)。
超级会员免费看
订阅专栏 解锁全文
7039

被折叠的 条评论
为什么被折叠?



