文章目錄
- 三個場景
-
- 火車站售票
- 銀行轉賬
- 網上購物
- 對上述三個場景進行抽象
- 進一步抽象:一緻性級别
三個場景
火車站售票
無論在哪個售票視窗,每時每刻的餘票都必須是準确無誤的。
銀行轉賬
實時扣除的賬戶金額,到另一個賬戶上是有時延的,但是最終要求金額準确無誤。
網上購物
商品詳情頁面上顯示的庫存量,通常不是商品的真實庫存量,隻有在下單購買的時候,系統才會檢查該商品的真實庫存量。
對上述三個場景進行抽象
- 有些系統,既要快速地響應客戶,同時還要保證系統的資料對于任意用戶端都是真實可靠的。
- 有些系統,需要為使用者保證絕對可靠的資料安全,雖然在資料一緻性上存在延時,但最終務必保證嚴格的一緻。
- 有些系統,雖然向使用者展示了一些“錯誤”的資料,但是在整個系統使用過程中,一定會在某一個流程上對系統資料進行準确無誤的檢查,進而避免發生不必要的損失。
進一步抽象:一緻性級别
以前有寫過一緻性級别的詳細概念,參考:《強一緻性、順序一緻性、弱一緻性和共識》
這裡小結一下:
- 強一緻性
- 順序一緻性
- 弱一緻性
- 最終一緻性
- 因果一緻性(Causal consistency)
- 讀已之所寫(使用者一緻性)(Read your writes)
- 會話一緻性(Session consistency)
- 單調讀一緻性(Monotonic read consistency)
- 單調寫一緻性(Monotonic write consistency)
- 最終一緻性