共识与协议算法:可靠广播与无等待共享内存共识
在分布式系统中,共识算法是确保多个进程或节点就某个值达成一致的关键机制。然而,在存在故障的异步系统中,实现共识是一项极具挑战性的任务。本文将探讨可靠广播以及无等待共享内存共识在异步系统中的相关内容。
可靠广播
可靠终止广播(RTB)在存在故障的情况下是无法解决的。但一种弱化版本的 RTB,即可靠广播,在崩溃故障下是可以解决的。可靠广播协议如算法 14.8 所示:
(1) Process P0 initiates reliable broadcast:
(1a) broadcast message M to all processes.
(2) A process Pi, 1 ≤i ≤n, receives message M:
(2a) if M was not received earlier then
(2b) broadcast M to all processes;
(2c) deliver M to the application.
该协议最多使用 $O(n^2)$ 条消息来广播消息 M,并且能够在任意数量的故障情况下正常工作。RTB 和可靠广播的关键区别在于,RTB 要求最终交付某些消息,即使发送者在即将广播时失败,也必须发送一个空消息;而可靠广播则不需要发送这个空消息。这就归结为能否区分缓慢进程和失败进程的能力,这也是在崩溃故障下解决共识问题的关键。
无等待共享内存共识在异步系统中的不可能性
在易发生崩溃故障的异步消息传递系统中无法达成共识的结论,同样适用于异步共享内存系统