伯克利算法 (C/C++)


伯克利算法是一种用于分布式系统中时钟同步的算法。当分布式网络中的一些或所有系统存在以下问题之一时,可以使用此算法:

  • A. 机器没有精确的时间源。

  • B. 网络或机器没有 UTC 服务器。

分布式系统包含多个物理上分离但通过网络连接在一起的节点。

伯克利算法

在此算法中,系统选择一个节点作为主节点/领导者节点。这是从服务器中的节点池中完成的。

算法如下:

  • 选举过程选择服务器中的主节点。

  • 然后,领导者定期轮询跟随者,并以类似于克里斯蒂安算法的方式获取它们的时间。

  • 然后,领导者计算其他节点需要更改或调整以同步到全局时钟时间的时间,该时间是提供给领导者节点的时间的平均值。

让我们总结一下使用伯克利算法同步时钟的步骤:

具有时钟时间的分布式系统中的节点:

N1 -> 14:00 (master node)
N2 -> 13: 46
N3 -> 14: 15

步骤 1 - 选举领导者,节点 N1 是系统中的主节点。

步骤 2 - 领导者向所有节点请求时间。

N1 -> time : 14:00
N2 -> time : 13:46
N3 -> time : 14:20

步骤 3 - 领导者平均时间并将校正时间发送回节点。

N1 -> Corrected Time 14:02 (+2)
N2 -> Corrected Time 14:02 (+16)
N3 -> Corrected Time 14:02 (-18)

这展示了如何使用伯克利算法同步分布式系统的节点。

更新于:2020年7月17日

1K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.