簡介
在分佈式系統的設計中,分佈式系統有三個指標 CAP,但是沒有一種設計可以同時滿足 CAP (一致性,可用性,分區容錯性 )3個特性,只能滿足其中 2 個
CAP
簡介
| CAP | 描述 |
|---|---|
| C 一致性 | Consistency,一致性 強調的是 分佈式系統中各個節點之間的數據一致性;不管訪問哪個節點,返回的數據都是一致的,否則節點不可用(拒絕服務) |
| A 可用性 | Availability,可用性 強調的是 分佈式系統中各個節點都能正常被訪問,正常響應請求,但是無法保證 返回數據的一致性:也就是各個節點正常訪問但是節點之間數據不一定一致 |
| P 分區容錯性 | Partition tolerance,節點網絡故障,不可避免,當節點間出現任意數量的消息丟失或高延遲(網絡障礙)的時候,系統仍然可以繼續提供服務 |
當節點出現的數據不一致時的處理方式不同
組合
| 組合 | 描述 |
|---|---|
| CA | 一致性 + 可用性,不存在,P 一定得有,分佈式系統下,網絡故障網絡延遲必然存在, |
| CP | 一致性 + 分區容錯性;數據強一致性,返回的都是絕對一致的數據,不一致的時候會讀取失敗(拒絕提供服務) |
| AP | 可用性 + 分區容錯性:服務高可用,但是不能保證數據一致性,要保證數據一致性,服務就不一定可用 |
Base
Base:基本可用(Basically Available)和最終一致性(Eventually consistent)
CAP 規則下 AP 模型 的延伸,AP + Base,實現 服務高可用 + 數據最終一致性
最終一致性:也就是允許節點之間的數據出現短暫的數據不一致情況,但是節點高可用
為什麼 CAP 不能同時滿足?
在分佈式系統中,節點與節點之間通過網絡通信,網絡通信必然存在:網絡延遲、網絡故障;
因此 CAP 中,P (分區容錯性)必須存在,其次,CA 不可能同時存在,因為分佈式系統下,數據同步存在延遲,無法實時一致性,存在某一刻不一致,那麼數據不一致的情況下:
● 節點要麼滿足 C,數據不一致,拒絕服務
● 節點要麼滿足 A,服務可用,但是數據不一致
綜上所述:P 必須,C 和 A 只能選一個,也就是 組合: CP、AP
Redis 採用的分佈式理論 CAP + Base
redis 採用的是 AP + Base 模型,也就是滿足 分區容錯性 和 服務高可用 ,保證數據的最終一致性
原文地址
分佈式理論 CAP + Base