分布式中的一致性模型
進行資料複製主要出於兩個目的:可靠性和效能。資料一旦被複製,就會帶來一致性的問題。
以資料為中心的一致性模型
1.嚴格一致性(strict consistency)
對於資料項x的任何讀操作將返回最近一次對x進行寫操作的結果所對應的值。
嚴格一致性是限制性最強的模型,但是在分布式系統中實現這種模型代價太大,所以在實際系統中運用有限。
2.順序一致性
任何執行結果都是相同的,就好像所有程序對資料儲存的讀、寫操作是按某種序列順序執行的,並且每個程序的操作按照程式所制定的順序出現在這個序列中。
也就是說,任何讀、寫操作的交叉都是可接受的,但是所有程序都看到相同的操作交叉。順序一致性由lamport(1979)在解決多處理器系統的共享儲存器時首次提出的。
3.因果一致性
所有程序必須以相同的順序看到具有潛在因果關係的寫操作。不同機器上的程序可以以不同的順序看到併發的寫操作(hutto和ahamad 1990)。
假設p1和p2是有因果關係的兩個程序,例如p2的寫操作信賴於p1的寫操作,那麼p1和p2對x的修改順序,在p3和p4看來一定是一樣的。但如果p1和p2沒有關係,那麼p1和p2對x的修改順序,在p3和p4看來可以是不一樣的。
下表列出一些一致性模型,以限制性逐漸降低的順序排列。
一致性 描述
嚴格所有共享訪問按絕對時間排序
線性化所有程序以相同的順序看到所有的共享訪問。而且,訪問是根據(非唯一的)全域性時間戮排序的 順序
所有程序以相同順序看到所有的共享訪問。訪問不是按時間排序的 因果
所有的程序以相同的順序看到困果相關的共享訪問
fifo
所有程序以不同的程序提出寫操作的順序相互看到寫操作。來自不同的程序的寫操作可以不必總是以同樣的順序出現
另一種不同的方式是引入顯式的同步變數,下表是這樣的一致性模型的總結。
一致性 描述
弱只有在執行一次同步後,共享資料才被認為是一致的 釋放
退出臨界區時,使共享資料成為一致 入口
進入臨界區時,使屬於乙個臨界區的共享資料成為一致
以客戶為中心的一致性模型
1.最終一致性
最終一致性指的是在一段時間內沒有資料更新操作的話,那麼所有的副本將逐漸成為一致的。例如openstack swift就是採用這種模型。以一次寫多次讀的情況下,這種模型可以工作得比較好。
2.單調讀
如果乙個程序讀取資料項x的值,那麼該程序對x執行的任何後續讀操作將總是得到第一次讀取的那個值或更新的值
3.單調寫
乙個程序對資料x執行的寫操作必須在該程序對x執行任何後續寫操作之前完成。
4.寫後讀
乙個程序對資料x執行一次寫操作的結果總是會被該程序對x執行的後續讀操作看見。
5.讀後寫
同乙個程序對資料項x執行的讀操作之後的寫操作,保證發生在與x讀取值相同或比之更新的值上。
分布式一致性
分布式一致性是指在分布式環境中對某個副本資料進行更新操作時,必須確保其他副本也會更新,避免不同副本資料不一致。分布式系統乙個重要的問題時解決資料複製,一是為了增加系統的可用性防止單點故障,二是提高系統可用性,通過負載聚恆,使分布在不同位置的資料副本能夠提供服務。理想狀態下,當然希望分布式系統能夠實現...
分布式一致性
分布式系統的乙個重要問題是資料的複製。對資料的複製一般有兩個原因 資料複製的主要難題是保持各個副本的一致性。即在更新乙個副本時,必須確保同時更新其他的副本,否則資料的各個副本將不再相同。一致性模型實質上是程序和資料儲存之間的乙個約定。正常情況下,乙個資料項上執行讀操作時,它期待該操作返回的是該資料在...
分布式系統 一致性模型
分布式系統中乙個重要的問題就是資料複製,資料複製一般是為了增強系統的可用性或提高效能。而實現資料複製的乙個主要難題就是保持各個副本的一致性。本文首先討論資料複製的場景中一致性模型如此重要的原因,然後討論一致性模型的含義,最後分析常用的一致性模型。資料複製主要的目的有兩個 可用性和效能。首先資料複製可...