【问题标题】:Initiator nodes in a distributed system分布式系统中的发起节点
【发布时间】:2020-01-05 13:18:55
【问题描述】:
我的任务是找出分布式系统中状态记录算法的所有可能发起节点。
刚才给出的问题是
“编写一个程序,找出分布式系统中状态记录算法的所有可能发起节点。”。
我想提一下,我们在分布式操作系统的课程中学习了 Chandy - Lamport 的全局状态记录算法。我为 Chandy - Lamport 的另一项任务的全局状态记录算法编写了一个代码。
这个发起节点意味着什么?我以为那些记录了它们相应状态的节点。我对吗?我必须用java编写代码。请建议我遵循的方法或算法。
【问题讨论】:
标签:
java
operating-system
distributed-computing
distributed-system
【解决方案1】:
根据Chandy-Lamport algorithm上的维基百科页面:
算法的假设如下:
- 没有失败,所有消息都完好无损地到达,并且只有一次
- 通信通道是单向的,按 FIFO 排序
- 系统中任意两个进程之间存在通信路径
- 任何进程都可以启动快照算法
- 快照算法不会干扰进程的正常执行
- 系统中的每个进程都会记录其本地状态和传入通道的状态
该算法使用标记消息工作。每个进程想要
启动快照记录其本地状态并在每个快照上发送一个标记
其传出渠道。所有其他进程,在收到一个
标记,记录它们的本地状态,从哪个通道的状态
标记只是空的,并在所有
他们的传出渠道。如果一个进程收到一个标记后
记录它的本地状态,它记录输入通道的状态
标记来自该标记,因为它携带了此后收到的所有消息
它首先记录了它的本地状态。
您使用的术语与维基百科的描述略有不同,但我假设您的“节点”对应于上述“进程”。因此,“发起者节点”只是一个发起(请求)快照的简单节点。
如果这就是您的术语的意思,那么使用 Chandy-Lamport 算法,任何节点都可以是发起节点。因此,问题的答案是“全部”。
但是,鉴于答案/解决方案的琐碎性质,我怀疑这不是您的任务的真正含义。要么你遗漏了一些上下文,要么任务被错误陈述。我建议你问问你的导师。
(或者......也许这是一个“技巧问题”。)