c:集群中所有機器狀態是一致的。
a:客戶端訪問集群中任意乙個節點,總能得到"處理成功"的結果。
假設有五個節點:n1~n5 ,出現網路分割槽被分成兩組:[n1~n2]和[n3~n5],那麼當n1出來客戶端請求時(為了處理這種情況,也就是說"容忍網路分割槽",即支援 p):
1:如果要保證c(一致性),那麼它需要把訊息複製到所有節點,但是網路分割槽導致無法成功複製到n3~n5,所以它只能返回"處理失敗"的結果給客戶端。(這時系統就處於不可用狀態,即喪失了a)
2:如果要保證可用性a,那麼n1就只能把訊息複製到n2,而不用複製到n3~n5(或者無視複製失敗/超時),但n3同時也可能在處理客戶端請求(譬如對同乙個值進行修改),n3也為了保證a而做了同樣的處理。 那麼 [n1~n2]和[n3~n5]的狀態就不一致了,於是就喪失了 c。
那麼如果不支援p(也就是不容忍網路分割槽),也就是說(很樂觀的認為)假設系統不會出現網路分割槽。
CAP定理簡單理解
要滿足p,就是允許網路通訊可能失敗,那麼在多個副本之間的同步就可能存在失敗,那麼某個副本就可能存在過期的資料。所以當使用者訪問這個副本時,系統有兩種選擇 1.為了滿足強一致性,就一直同步,直到這個副本也得到了最新資料。但是由於通訊可能失敗,這個同步時間無法滿足不超過timeout。即取c舍a。2.保...
架構基礎 CAP原理
cap指的的分布式系統中的三個指標 cap不可能同時達到,所以只能從ca cp ap中有傾向的設計系統 向分布式系統中完成寫操作後,任何操作都應該返回寫入後的最新的值。這就要求分布式系統寫操作後必須要同步資料到其它節點,且未同步的節點讀寫都要暫時鎖定直到同步完成 系統要在任何時候都可用,收到請求後一...
架構基礎 CAP原理
cap指的的分布式系統中的三個指標 cap不可能同時達到,所以只能從ca cp ap中有傾向的設計系統 向分布式系統中完成寫操作後,任何操作都應該返回寫入後的最新的值。這就要求分布式系統寫操作後必須要同步資料到其它節點,且未同步的節點讀寫都要暫時鎖定直到同步完成 系統要在任何時候都可用,收到請求後一...