CAP理論
- 一致性(Consistency):在分佈式系統完成某寫操作後任何讀操作,都應該獲取到該寫操作寫入的那個最新的值。相當於要求分佈式系統中的各節點時時刻刻保持數據的一致性。分佈式系統完成寫操作之後任何節點讀取該數據都是哪個最新的寫的值,也就是時刻保持數據一致。
- 可用性(Availability): 一直可以正常的做讀寫操作。簡單而言就是客戶端一直可以正常訪問並得到系統的正常響應。用戶角度來看就是不會出現系統操作失敗或者訪問超時等問題。系統一直處在正常響應狀態,不會出現訪問失敗等情況。
- 分區容錯性(Partition tolerance):指的分佈式系統中的某個節點或者網絡分區出現了故障的時候,整個系統仍然能對外提供滿足一致性和可用性的服務。也就是說部分故障不影響整體使用。
現如今, 在分佈式場景下,集羣規模越來越大,節點越來越多。所以說節點故障、網絡故障會是常態化產生,因此分區容錯性(P)是必須要保證的。所以只能在一致性(C)和可用性(A)之間來進行取捨。但對於傳統的項目就可能有所不同,拿銀行的轉賬系統來說,涉及到金錢的對於數據一致性不能做出一絲的讓步,C必須保證,出現網絡故障的話,寧可停止服務,可以在A和P之間做取捨。
BASE理論
在分佈式系統中,我們往往追求的是可用性,它的重要程序比一致性要高,那麼如何實現高可用性呢? 前人已經給我們提出來了另外一個理論,就是BASE理論,它是用來對CAP定理進行進一步擴充的。
BASE理論指的是:
- Basically Available(基本可用)
- Soft state(軟狀態)
- Eventually consistent(最終一致性)
BASE理論是對CAP中的一致性和可用性進行一個權衡的結果,理論的核心思想就是:我們無法做到強一致,但每個應用都可以根據自身的業務特點,採用適當的方式來使系統達到最終一致性(Eventual consistency)。