本文是《如何學習分布式系統(tǒng)》中,關于一致性模型的相關介紹。
什么是一致性模型
一致性模型指的是分布式系統(tǒng)對外界承諾的一個契約,外界按照契約的規(guī)定與分布式系統(tǒng)發(fā)生交互,就能得到契約中承諾的觀測結果。
這么解釋過于抽象,我們看幾個實際的例子。
- 你給女朋友轉賬了一千塊,然后你給她打電話:“親愛的,我給你打了一千塊”。女朋友一查余額,果然多了一千塊,于是龍顏大悅。
- 女朋友自拍發(fā)了朋友圈,打電話命令你點贊,你打開朋友圈,發(fā)現(xiàn)什么也沒有?;宋宸昼姾搴昧税l(fā)怒的女朋友,才看到那條姍姍來遲的朋友圈。
- 在女朋友的自拍下面,你看到你女朋友寫到“咱們上次逛街的地方”,過了三秒,看到她閨蜜的評論“這是哪里啊?”
這些系統(tǒng)表現(xiàn)出來的行為,就是其一致性模型的體現(xiàn)。
一致性模型的研究由來已久,在基于共享內存的多核CPU并行計算中,科學家就已經開始對一致性模型開始研究,然后將一致性模型順理成章的推廣到基于網絡通信的多節(jié)點協(xié)同系統(tǒng)中。
在分布式系統(tǒng)中,最理想的情況是一個事件一旦發(fā)生,就立刻被所有參與者感知,每個事件都有精確的物理時間用來確定先后順序,然而計算機技術實際上有各種各樣的限制,所以完美的一致性模型很難達到,所以大家就馬馬虎虎的退而求其次啦。
一致性模型有強弱之分,一般來說,如果一個算法能在一個一致性模型中工作,那么它就能在一個更強的的一致性模型中工作。
在后面的文章中,我們一起研究幾個常見的一致性模型。
擴展閱讀
分布式系統(tǒng)中還有很多一致性模型,有興趣的話,可以參考這個網站。
更多相關內容,請參考系列文章《如何學習分布式系統(tǒng)》。