分布式编程核心概念与实践探索
1. 分布式系统中的消息传递与视图同步
在分布式系统里,不同进程对故障的检测可能存在差异,检测顺序也可能不同,而且在刷新过程中部分进程可能会出现故障。这就导致不同进程在达成共识时可能会提出不同的值。不过,每个提议都包含了下一个视图的有效进程集合以及已可靠传递(vs - delivered)的消息集合。这里唯一的风险在于,对于已崩溃进程的消息,可能会出现传递数量或多或少的情况,但这并不会造成实质性的危害。
共识机制确保了所有正常进程能够选择相同的新视图。在安装新视图之前,进程 p 会解析所有要进入新视图的其他进程的 vs - delivered 消息集合,并传递那些自己尚未传递的消息。最后,进程 p 安装新视图并恢复在该视图内的正常操作。
任何消息在被可靠广播(vs - broadcast)后,发送者会立即进行可靠传递,同时该消息会被添加到发送者的已传递消息集合 inview 中。若发送者保持正常,依据之前描述的算法(该算法使用了完美故障检测器),消息会在下一次视图变更之前完成传递。而且,某个进程变量 seen 中的已传递消息集合,会作为决定下一个视图的共识实例的输出,提供给所有未崩溃的进程。由于所有正常进程在安装下一个视图之前都会解析这个集合以查找缺失的消息,所以所有包含的消息会在所有正常进程的同一视图中完成传递。
当视图无需变更时,可靠传递一条消息的成本与尽力而为广播的成本相同,即仅需 O(N) 条消息和一次通信步骤。而安装新视图时,算法要求每个进程使用尽力而为广播发送一条消息,并执行一次统一共识实例以就下一个视图达成一致。
1.1 流程说明
以下是进程处理消息和视图变更的流程图: <
超级会员免费看
订阅专栏 解锁全文
1216

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



