Skip to content

模型Model

同步系统

Synchronous distributed system

计算步和通信延迟有已知上界的系统模型。

形式陈述 ​

同步分布式系统给算法一个事先知道的最坏时间界。在带物理时间的模型中,正确进程的相关计算步骤、可靠信道上的消息传输,以及需要时的时钟漂移,都受明确的已知界约束。本条目以同步消息传递系统为主:进程之间只能沿通信链路交换消息,不能直接读取别人的本地状态。[1,2]

常用的抽象把执行分成由自然数编号的轮次。设 si(r) 是进程 i 完成第 r 轮后的状态,si(0) 为初始状态。无故障轮模型中,第 r+1 轮依次包含:

  1. 根据 si(r) 计算要发送的消息。
  2. 接收本轮其他进程发给自己的消息。
  3. 由旧状态与本轮收件箱计算新状态 si(r+1)。

这就是一个带收发接口的状态机。消息可由发送者状态决定,也可以明确规定“不发送”。在这个约定下,进程本轮刚收到的新信息,最早下一轮才能继续转发;不能在一轮内沿任意长路径连续传播。

更明确地,可把更新写成

si(r+1)=δi(si(r),Mi(r+1)),

其中 Mi(r+1) 是本轮按发送者索引的收件箱。消息格式、缺失消息的标记及故障行为都须进入状态转移规格。

理想轮模型与物理时间模型要分清。前者直接把一轮视为单位,某些版本允许一轮内任意有限本地计算;后者若要模拟这种轮次,必须另外给出本地处理、调度、消息传输和时钟误差的实现界。两者不因都叫“同步”就自动具有相同的实际耗时。

直觉

同步性提供的是一把有已知刻度的尺子。正确消息可能先到,也可能后到;只要不超过承诺的时间界,算法就能决定何时结束等待、进入下一阶段。因此同步并不要求所有处理器在同一物理瞬间执行每条指令,也不要求消息每次都花同样长的时间。

轮次进一步把具体到达顺序隐藏起来。算法关心“第 r 轮收到了谁的什么消息”,而不是它们在这一轮的第几毫秒抵达。实现可以给消息附轮次标签,为提前到达的消息设置缓冲;但标签本身不能保证消息及时到达,时间界仍来自模型或底层机制。

在可靠无故障异步网络上,网络同步器可以用ACK和SAFE证明某个逻辑轮的收件箱已完整,再允许下一轮更新。它模拟同步算法的轮接口,额外支付控制消息与等待成本,并没有向物理网络添加可用于故障判断的已知时延界。

超时能说明什么,取决于协议还承诺了什么。假设正确进程每轮必须发送心跳、链路可靠、唯一故障为崩溃,规定时限内没有心跳才可推出发送者已崩溃或某项模型假设被破坏。若协议允许正确进程沉默,或者链路允许丢包,“没有收到”就不能单独识别进程故障。

例子与边界

一条消息每轮只能前进一跳 ​

考虑无故障链 A−B−C。初始只有 A 知道消息 m;每个知道消息的进程在下一轮转发给邻居。

时刻 知道 m 的进程
初始 A
第 1 轮结束 A,B
第 2 轮结束 A,B,C

第 1 轮中,B 的发送动作依据初始状态,因此不能把本轮稍后才收到的 m 同轮转给 C。一般地,在连通无向网络中,洪泛从源点到达距离为 d 的顶点恰需 d 轮;向全网广播的轮数是源点到其他顶点的最大距离,不超过网络直径 D。

这个界也有因果含义:在给定的一跳一轮模型中,距离大于 r 的初始输入还不能影响某节点第 r 轮后的状态。因此直径并非只是方便的估计量,它反映了信息传播的必经距离。

因此,保持源点以外所有节点的初始状态相同,仅将源点比特分别设为零和一;对距离源点 d 的节点,前 d−1 轮的两次执行不可区分。要在两次执行中都输出正确比特,至少需要 d 轮。若其他节点的初始信息已泄露源点比特,这对局部视图相同的执行就不一定存在,不能沿用这个下界。

收到答案,不等于知道全网都收到 ​

一个节点收到消息 m 后可以立即输出自己的答案,但它未必知道远端节点是否已经收到。如果所有节点预先知道总节点数上界 N,连通简单图中 N−1 轮足以传播到所有节点;若没有任何合适的规模或距离上界,则还需要确认、汇聚或另一个终止检测机制。局部结果和全局完成是不同的知识状态。

崩溃发生在轮内时 ​

允许进程在发送过程中崩溃的模型,可能规定它只向一部分邻居发出本轮消息;另一些模型则把整轮发送视为原子动作。两种规格允许的执行不同,不能只写“同步且可崩溃”便认为算法证明已经完整。可靠信道保证已发送消息的交付,也不必保证崩溃进程把原计划的所有消息都发出。

同步不能凭空打破对称 ​

在一个至少有三个进程的匿名环上,假设所有进程运行同一确定性程序、初始状态相同,而且各自的端口角色也完全对称。第 1 轮中它们发出相同消息、收到相同形状的消息,转移到相同状态;归纳下去,每一轮仍然如此。

于是确定性程序无法只让其中一个进程宣布当选:要么所有进程同时宣布,要么都不宣布。这个选主障碍在完全同步、没有故障时仍存在。唯一标识、随机性或额外的不对称输入改变的是这个对称性条件,而不是同步性的定义。[1,2]

已知界、未知界与最终生效的界 ​

完全同步模型从规定的执行起点就提供算法可用的界。部分同步则要进一步说明是哪种放宽:例如界存在但算法不知道其数值,或者已知界只在某个未知的稳定时刻之后成立。算法面对的关键困难,是当前尚无法确认“这次等待是否已经足够长”。最近测到的最大延迟,也不能直接当作以后永远有效的已知上界。

Byzantine 进程还可以按时发送相互矛盾的消息;同步界约束时间,不约束消息内容。故障数、身份认证、信道可靠性和进程是否会永久停止,都必须作为独立条件写明。

推论与应用

同步模型使可靠广播、选主和一致性协议能够逐轮分析。证明通常先建立“第 r 轮之后哪些信息已传播、哪些状态仍满足不变量”,再推出指定轮数内完成。使用超时的地方则要指出究竟依赖哪条已知界,不能把超时当成脱离模型的故障预言机。

轮数、消息条数和总比特数是不同成本。同样用 D 轮完成洪泛的协议,可能反复发送已经见过的消息,也可能记录消息标识以抑制重复;二者时间上界相同,通信开销却不同。若每个节点只在首次得知时沿每条关联边转发一次,有向发送总数至多为 2|E|;允许无限重发便不能沿用这个界。模型规定每条消息是否有长度限制,也会改变一轮能交换多少信息。

分布式图算法常进一步区分 LOCAL 与 CONGEST:前者允许每边每轮任意有限长消息,后者限制每边每个方向每轮为 O(log⁡n) 位;两者都把有限本地计算与通信轮数分开计量。Cole–Vishkin 颜色缩减给出一个完整例子:在给定一致方向和共同颜色上界 K 的环上,每轮读邻点旧色、同时更新,最终得到三染色。其 O(log∗⁡K) 轮界并不同时意味着常数消息长度或常数本地计算;初始 K=nO(1) 时才直接满足这里的 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;引言与部分同步模型定义。
关系图谱12 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组