1. 程式人生 > >CAP定理(theorem)

CAP定理(theorem)

可用性 nbsp ron 就是 其他 情況 傳統 請求 tro

一致性(Consistency): 每次讀取都會收到最新的寫入或錯誤
可用性(Availability): 每個請求都會收到 (非錯誤) 響應, 但不保證它包含最新的寫入
分區容差(Partition tolerance): 盡管節點之間的網絡刪除 (或延遲) 了任意數量的消息, 但系統仍繼續運行
特別是, cap 定理意味著, 在存在網絡分區的情況下, 必須在一致性和可用性之間做出選擇。請註意, cap 定理中定義的一致性與 acid 數據庫 transactions[4] 中保證的一致性有很大不同。

說明

沒有分布式系統可以避免網絡故障,因此通常必須容忍網絡分區。在存在分區的情況下,可以選擇一個分區:一致性或可用性。在選擇一致性而非可用性時,如果由於網絡分區而無法保證特定信息是最新的,則系統將返回錯誤或超時。在選擇可用性而非一致性時,系統將始終處理查詢並嘗試返回最新的可用信息版本,即使由於網絡分區而無法保證其是最新的。

在沒有網絡故障的情況下 - 也就是說,當分布式系統正常運行時 - 可以滿足可用性和一致性。

CAP經常被誤解,好像必須始終選擇放棄三種保證中的一種。實際上,只有在發生網絡分區或故障時,才能在一致性和可用性之間進行選擇;在所有其他時間,不需要進行任何權衡。

設計了傳統ACID的數據庫系統,例如RDBMS選擇一致性而非可用性,而圍繞BASE理念設計的系統,例如NoSQL運動中常見的,選擇可用性而不是一致性。

PACELC定理以CAP為基礎,即使在沒有分區的情況下,也會在延遲和一致性之間進行另一次權衡。

https://en.wikipedia.org/wiki/CAP_theorem

CAP定理(theorem)