“执行遵循同步轮模型:一轮内先根据旧状态发送,再接收,最后统一更新。LOCAL 模型允许每条边每轮传任意有限长消息,有限本地计算不计通信轮数。CONGEST 模型另要求每条边每个方向每轮至多…”
形式陈述
同步分布式系统给算法一个事先知道的最坏时间界。在带物理时间的模型中,正确进程的相关计算步骤、可靠信道上的消息传输,以及需要时的时钟漂移,都受明确的已知界约束。本条目以同步消息传递系统为主:进程之间只能沿通信链路交换消息,不能直接读取别人的本地状态。[1,2]
常用的抽象把执行分成由自然数编号的轮次。设
- 根据
计算要发送的消息。 - 接收本轮其他进程发给自己的消息。
- 由旧状态与本轮收件箱计算新状态
。
这就是一个带收发接口的状态机。消息可由发送者状态决定,也可以明确规定“不发送”。在这个约定下,进程本轮刚收到的新信息,最早下一轮才能继续转发;不能在一轮内沿任意长路径连续传播。
更明确地,可把更新写成
其中
理想轮模型与物理时间模型要分清。前者直接把一轮视为单位,某些版本允许一轮内任意有限本地计算;后者若要模拟这种轮次,必须另外给出本地处理、调度、消息传输和时钟误差的实现界。两者不因都叫“同步”就自动具有相同的实际耗时。
直觉
同步性提供的是一把有已知刻度的尺子。正确消息可能先到,也可能后到;只要不超过承诺的时间界,算法就能决定何时结束等待、进入下一阶段。因此同步并不要求所有处理器在同一物理瞬间执行每条指令,也不要求消息每次都花同样长的时间。
轮次进一步把具体到达顺序隐藏起来。算法关心“第
在可靠无故障异步网络上,网络同步器可以用ACK和SAFE证明某个逻辑轮的收件箱已完整,再允许下一轮更新。它模拟同步算法的轮接口,额外支付控制消息与等待成本,并没有向物理网络添加可用于故障判断的已知时延界。
超时能说明什么,取决于协议还承诺了什么。假设正确进程每轮必须发送心跳、链路可靠、唯一故障为崩溃,规定时限内没有心跳才可推出发送者已崩溃或某项模型假设被破坏。若协议允许正确进程沉默,或者链路允许丢包,“没有收到”就不能单独识别进程故障。
例子与边界
一条消息每轮只能前进一跳
考虑无故障链
| 时刻 | 知道 |
|---|---|
| 初始 | |
| 第 1 轮结束 | |
| 第 2 轮结束 |
第 1 轮中,
这个界也有因果含义:在给定的一跳一轮模型中,距离大于
因此,保持源点以外所有节点的初始状态相同,仅将源点比特分别设为零和一;对距离源点
收到答案,不等于知道全网都收到
一个节点收到消息
崩溃发生在轮内时
允许进程在发送过程中崩溃的模型,可能规定它只向一部分邻居发出本轮消息;另一些模型则把整轮发送视为原子动作。两种规格允许的执行不同,不能只写“同步且可崩溃”便认为算法证明已经完整。可靠信道保证已发送消息的交付,也不必保证崩溃进程把原计划的所有消息都发出。
同步不能凭空打破对称
在一个至少有三个进程的匿名环上,假设所有进程运行同一确定性程序、初始状态相同,而且各自的端口角色也完全对称。第 1 轮中它们发出相同消息、收到相同形状的消息,转移到相同状态;归纳下去,每一轮仍然如此。
于是确定性程序无法只让其中一个进程宣布当选:要么所有进程同时宣布,要么都不宣布。这个选主障碍在完全同步、没有故障时仍存在。唯一标识、随机性或额外的不对称输入改变的是这个对称性条件,而不是同步性的定义。[1,2]
已知界、未知界与最终生效的界
完全同步模型从规定的执行起点就提供算法可用的界。部分同步则要进一步说明是哪种放宽:例如界存在但算法不知道其数值,或者已知界只在某个未知的稳定时刻之后成立。算法面对的关键困难,是当前尚无法确认“这次等待是否已经足够长”。最近测到的最大延迟,也不能直接当作以后永远有效的已知上界。
Byzantine 进程还可以按时发送相互矛盾的消息;同步界约束时间,不约束消息内容。故障数、身份认证、信道可靠性和进程是否会永久停止,都必须作为独立条件写明。
推论与应用
同步模型使可靠广播、选主和一致性协议能够逐轮分析。证明通常先建立“第
轮数、消息条数和总比特数是不同成本。同样用
分布式图算法常进一步区分 LOCAL 与 CONGEST:前者允许每边每轮任意有限长消息,后者限制每边每个方向每轮为
同步分布式图模型与 BFS 波前把这一轮模型落实为每个节点只保存距离与父端口的程序:逐轮不变量证明首次收到即最短,并区分离心率轮后的输出稳定与共同规模界规定的停止时刻。其全局最小标识例子还说明,即使 LOCAL 消息长度不限,远端输入仍必须逐跳传播。
从理论落到实现,核心工作是把“一轮”对应到可兑现的等待与处理规则,并明确故障假设。加入同步性可以排除某些异步执行中的无限拖延,但具体协议的活性仍需单独证明,不能由“系统同步”四个字直接推出。
参考资料
- [1] Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chapters 2–6:同步网络模型、选主与逐轮算法分析。
- [2] Nancy A. Lynch, 6.852J Distributed Algorithms, Class 1, MIT OpenCourseWare, 2009,slides 11–16:轮模型与匿名环上的确定性选主不可能性。
- [3] Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Chapters 2–3。
- [4] Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer, “Consensus in the Presence of Partial Synchrony”, Journal of the ACM 35(2), 1988, pp. 288–323;引言与部分同步模型定义。