伯克利演算法 (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.