2014-10-09 604 views
0

所以我试图解决这个有关伯克利算法的练习:伯克利算法 - 分布式系统

说明Berkeley算法在以下情况下如何工作。有一组计算机需要内部同步。一台主计算机S和另外五台从计算机P1,P2,P3,P4和P5。主计算机定期轮询从属计算机并从从属设备接收时间戳。 Master在11:11:5.129(hr:min:sec:ms)上向slave发送请求,所有slave的往返时间S为10ms,P2为12ms,P3为16ms,P4为20ms,16ms为P5。 P1携带的时间戳是11:11:3.200,P2是11:11:1.500,P3是11:11:5.600,P4是11:11:10.000,P5是11:11:22.200。 Master S将丢弃错误时钟的时间戳,这些时钟的读数与其他时钟的读数相差10秒以上。平均时间S是什么计算的?这五个从节点各自的偏移量是多少?

这是我可以基于一些讲义,我发现在互联网上做什么:

平均=(5.129 + 3.2 + 1.5 + 5.6 + 10)/ 5 = 5.0658 偏移: S: - 0.0632 P1:1.8658 P2:3.5658 P3:-0.5342 P4:-4.9342 P5:-17.1342

讲座一无所知RTT倍不说,所以我想知道我是否应该使用它们解决这个练习。那么,我该怎么做?

回答

0

如果您从另一台计算机收到时间戳记,您需要考虑承载它的数据包所花费的时间。在没有任何其他信息的情况下,您可能无法做得比假设这次是往返时间的一半还要好。

作为比较,http://en.wikipedia.org/wiki/Network_Time_Protocol详细描述了NTP的等效计算。通过在两个方向上获得接收和传输的服务器和客户端时间戳,获得服务器和客户端时间戳,并且计算的时钟偏移量theta是接收减去传输和传输减去接收的平均值,其尝试平衡传输延迟 - 但是只有两个方向上的传输延迟是相等的,这相当于假设同一事物,并且文章确实说非对称分组延迟会产生系统性偏见。