關係數據庫/分佈式系統一致性模型

一致性是一個比較抽象的概念,涉及computer science的多個領域,例如:html

  1. 分佈式數據存儲(例如分佈式數據庫/分佈式文件系統/消息隊列)的讀寫一致性
  2. 傳統關係數據庫事務隔離級別,併發事務的一致性模型
  3. 共享內存的多核架構中,多個cpu core之間的緩存一致性(cache coherence)
  4. Web cache集羣的數據一致性

 

 

  • 圖右半部分,是關係數據庫的consistency model。從上到下,一致性的級別愈來愈低,併發性能會更好些。不一樣數據庫對於事務隔離級別的定義有所不一樣。
    • RR(repeatable read)
    • > CS(cursor scability)
    • > RC( read commit)。
  • 圖左半部分,是從分佈式系統的consistency model。WFR是write follows read, MR MW分別是monotonic read,monotonic write。
    • Linearizable(線性)
    • > Sequential(順序)
    • > Causal(因果)
    • > RyW(read your write)。
  • 根據CAP理論,圖中紅色部分的一致性模型,沒法知足100%的可用性,只能達到CP

 

Sequential consistency: Java內存模型 數據庫

Causal consistency(因果一致性)apache

若是Process A通知Process B它已經更新了數據,那麼Process B的後續讀取操做則讀取A寫入的最新值,而與A沒有因果關係的C則能夠最終一致性。緩存

Read-your-writes consistencysession

若是Process A寫入了最新的值,那麼Process A的後續操做都會讀取到最新值。可是其它用戶可能要過一會才能夠看到。架構

Session consistency併發

此種一致性要求客戶端和存儲系統交互的整個會話階段保證分佈式

Read-your-writes consistency性能

Hibernate的session提供的一致性保證就屬於此種一致性。設計

Monotonic read consistency

此種一致性要求若是Process A已經讀取了對象的某個值,那麼後續操做將不會讀取到更早的值。

Monotonic write consistency

此種一致性保證系統會序列化執行一個Process中的全部寫操做

 

2、ZooKeeper的保證(Consistency Guarantees

ZooKeeper是一個高效的、可擴展的服務,read和write操做都被設計爲快速的,read比write操做更快。

一、順序一致性(Sequential Consistency):從一個客戶端來的更新請求會被順序執行。

二、原子性(Atomicity):更新要麼成功要麼失敗,沒有部分紅功的狀況。

三、惟一的系統鏡像(Single System Image):不管客戶端鏈接到哪一個Server,看到系統鏡像是一致的。

四、可靠性(Reliability):更新一旦有效,持續有效,直到被覆蓋。

五、時間線(Timeliness):保證在必定的時間內各個客戶端看到的系統信息是一致的。

 

 

出處
相關文章
相關標籤/搜索