BASE是BasicallyAvailable(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)三個短語的簡寫,是由來自eBay的架構師Dan Pritchett提出的。網絡
BASE是對CAP中一致性和可用性權衡的結果,其來源於大規模互聯網系統分佈式實踐的總結,是基於CAP定理逐步演化而來的。架構
BASE的核心思想是:即便沒法作到強一致性(Strong consistency),但每一個應用均可以根據自身的業務特色,採用適當的方式來使系統達到最終一致性。分佈式
基本可用是指分佈式系統在出現不可預知故障的時候,容許損失部分可用性,如:網站
l 響應時間上的損失架構設計
如:正常時間0.5秒,故障時1-2秒設計
l 功能上的損失進程
如:一電子商務網站,節日促銷時,部分消費者被引導到一個降級的購物頁面。事務
和硬狀態相對,是指容許系統中的數據存在中間狀態,並認爲該中間狀態的存在不會影響系統的總體可用性,即容許系統在不一樣節點的數據副本之間進行數據同步的過程存在延時。同步
最終一致性強調的是系統中全部的數據副本,在通過一段時間的同步後,最終可以達到一個一致的狀態。it
最終一致性的本質是須要系統保證最終數據可以達到一致,而不須要實時保證系統數據的強一致性。
在沒有發生故障的狀況下,數據達到一致狀態的時間延遲,取決於網絡延遲、系統負載和數據複製方案設計等因素。
1. 因果一致性(Causal consistency)
進程A更新某個數據項後會通知進程B,進程B能獲取到進程A更新後的最新值。
2. 讀己之所寫(Read your writes)
進程A更新某個數據項後,它本身老是能訪問到更新過的最新值。
3. 會話一致性(Session consistency)
執行更新操做以後,客戶端可以在同一個會話中始終讀取到該數據項的最新值。
4. 單調讀一致性(Monotonic read consistency)
若是一個進程從系統中讀取出一個數據項的某個值後,那麼系統對於該進程後續的任何數據訪問都不該該返回更舊的值。
5. 單調寫一致性(Monotonic write consistency)
一個系統須要可以保證來自同一個進程的寫操做被順序地執行。
BASE理論和傳統事務的ACID特性是相反的,徹底不一樣於ACID的強一致性模型,而是經過犧牲強一致性來得到可用性,並容許數據在一段時間內是不一致的,但最終達到一致狀態。
在實際的分佈式場景中,不一樣業務單元和組件對數據一致性的要求是不一樣的,所以在具體的分佈式系統架構設計過程當中,ACID特性與BASE理論每每又會結合在一塊兒使用。