分布式共识:原理、挑战与解决方案
1. 引言
在分布式计算领域,共识问题有着广泛的应用。为了更好地理解共识问题,下面先介绍几个具体的例子:
- 领导者选举 :在一个由多个进程组成的网络中,每个进程都有自己的领导候选人提议,最终需要选出一个领导者,这个结果要反映每个进程的最终决策。
- 银行转账 :Alice 要从她在拉斯维加斯的储蓄账户向爱荷华市的支票账户转账 1000 美元。这个交易包含两个操作:借记 1000 美元和贷记 1000 美元,分别由两个不同的服务器处理。交易必须是原子性的,否则会导致严重问题,因此这两个服务器需要就交易是执行还是取消达成一致。
- 传感器测量 :五个独立的传感器测量熔炉的温度 T,每个传感器检查 T 是否大于 1000°C。有些传感器可能有故障,但不知道哪些有问题。正常的传感器需要就“T > 1000°C”这个条件的真假达成一致,以便决定下一步的行动。
- 时钟同步 :在网络的不同地理位置,有一组以相同速率运行的相位时钟。将其视为一个共识问题,初始的相位值是各个本地读数(可能是任意的),但最终的相位必须相同。
在没有故障的情况下,共识问题相对简单。但本章主要研究在存在故障的情况下的分布式共识问题。该问题可以表述为:一个分布式系统包含 n 个进程 {0, 1, 2, …, n - 1},每个进程在一个共同认可的域中有一个初始值。目标是设计一个算法,使得即使出现故障,进程最终也能就一个不可撤销的最终决策值达成一致,这个值需要满足以下三个条件:
- 终
超级会员免费看
订阅专栏 解锁全文
1087

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



