分布式CAP详解,为什么三个指标不可能同时做到。
CAP解釋:指的是在一個分布式系統(tǒng)中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區(qū)容錯性),三者不可得兼。
Consistency (一致性):寫操作之后的讀操作,必須返回該值。舉例來說,某條記錄是 a,用戶向 服務(wù)注冊中心G1?發(fā)起一個寫操作,將其改為 v1。接下來,用戶的讀操作就會得到 v1。這就叫一致性。
Availability(可用性):意思是只要收到用戶的請求,服務(wù)器就必須給出回應(yīng)。
用戶可以選擇向 G1 或 G2 發(fā)起讀操作。不管是哪臺服務(wù)器,只要收到請求,就必須告訴用戶,到底是 v0 還是 v1,否則就不滿足可用性。
Partition tolerance(分區(qū)容錯性):區(qū)間通信可能失敗。比如,一臺服務(wù)器放在中國,另一臺服務(wù)器放在美國,這就是兩個區(qū),它們之間可能無法通信。一般來說,分區(qū)容錯無法避免,因此可以認(rèn)為 CAP 的 P 總是成立。
一致性與可用性的矛盾
如果保證 G2 的一致性,那么 G1 必須在寫操作時,鎖定 G2 的讀操作和寫操作。只有數(shù)據(jù)同步后,才能重新開放讀寫。鎖定期間,G2 不能讀寫,沒有可用性。
如果保證 G2 的可用性,那么勢必不能鎖定 G2,所以一致性不成立。
綜上所述,G2 無法同時做到一致性和可用性。系統(tǒng)設(shè)計時只能選擇一個目標(biāo)。如果追求一致性,那么無法保證所有節(jié)點的可用性;如果追求所有節(jié)點的可用性,那就沒法做到一致性。
?
來源:https://www.cnblogs.com/incognitor/p/9759956.html
總結(jié)
以上是生活随笔為你收集整理的分布式CAP详解,为什么三个指标不可能同时做到。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前后端完全分离出现跨域、无法访问后台解决
- 下一篇: minio安装(包括docker安装)