本文是《如何學習分散式系統》中,關於一致性模型的相關介紹。

什麼是一致性模型

一致性模型指的是分散式系統對外界承諾的一個契約,外界按照契約的規定與分散式系統發生交互,就能得到契約中承諾的觀測結果。

這麼解釋過於抽象,我們看幾個實際的例子。

  1. 你給女朋友轉賬了一千塊,然後你給她打電話:「親愛的,我給你打了一千塊」。女朋友一查餘額,果然多了一千塊,於是龍顏大悅。
  2. 女朋友自拍發了朋友圈,打電話命令你點贊,你打開朋友圈,發現什麼也沒有。花了五分鐘哄好了發怒的女朋友,纔看到那條姍姍來遲的朋友圈。
  3. 在女朋友的自拍下面,你看到你女朋友寫到「咱們上次逛街的地方」,過了三秒,看到她閨蜜的評論「這是哪裡啊?」

這些系統表現出來的行為,就是其一致性模型的體現。

一致性模型的研究由來已久,在基於共享內存的多核CPU並行計算中,科學家就已經開始對一致性模型開始研究,然後將一致性模型順理成章的推廣到基於網路通信的多節點協同系統中。

在分散式系統中,最理想的情況是一個事件一旦發生,就立刻被所有參與者感知,每個事件都有精確的物理時間用來確定先後順序,然而計算機技術實際上有各種各樣的限制,所以完美的一致性模型很難達到,所以大家就馬馬虎虎的退而求其次啦。

一致性模型有強弱之分,一般來說,如果一個演算法能在一個一致性模型中工作,那麼它就能在一個更強的的一致性模型中工作。

在後面的文章中,我們一起研究幾個常見的一致性模型。

擴展閱讀

分散式系統中還有很多一致性模型,有興趣的話,可以參考這個網站。

更多相關內容,請參考系列文章《如何學習分散式系統》。

推薦閱讀:

相關文章