分布式理论CAP定理
CAP原則又稱CAP定理,指的是在一個分布式系統(tǒng)中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區(qū)容錯性),三者不可兼得。
998年,加州大學(xué)的計算機科學(xué)家 Eric Brewer 提出,分布式系統(tǒng)有三個指標(biāo):
Consistency(一致性): 所有的節(jié)點上的數(shù)據(jù)時刻保持同步,強一致性;
Availability(可用性): 每個請求都能接受到一個響應(yīng),無論返回的數(shù)據(jù)是否一致;
Partition tolerance(分區(qū)容錯性): 系統(tǒng)應(yīng)該能持續(xù)提供服務(wù),即使在遇到某節(jié)點或網(wǎng)絡(luò)分區(qū)故障的時候。
它們的第一個字母分別是 C、A、P。
Eric Brewer 說,這三個指標(biāo)不可能同時做到。這個結(jié)論就叫做 CAP 定理。
下面分別講述下這三個概念:
1.分區(qū)容錯性
相對于單點系統(tǒng),分布式系統(tǒng)會部署在多臺機器上,機器之間有可能是跨區(qū)域的,比如服務(wù)器機房一個在北京,一個在上海,如果在這兩個機房之間構(gòu)建了分布式系統(tǒng),那么這兩個區(qū)域的機器是需要通信的,而只要通信就有可能出現(xiàn)通信失敗,所以分區(qū)容錯性P是我們在設(shè)計分布式系統(tǒng)中必須要考慮到的問題。
2.一致性
一致性是說客戶端從分布式系統(tǒng)中拿數(shù)據(jù),不管從那一臺機器中獲取,都應(yīng)該是最新的。
?
假設(shè)某一時間client向server1服務(wù)器更新vo->v1,之后不管從server1還是從server2取值都是v1,這樣才滿足一致性。而如果cleint往server1寫過數(shù)據(jù)后,從server2中去獲取值,此時server1和server2之間還未同步,那么就會依然獲取到vo,那么就不滿足一致性。
3.可用性
可用性是指,不管任何時候,client向任意一臺server發(fā)起請求,都能得到響應(yīng),不管獲得的數(shù)據(jù)是v0還是v1。
一致性和可用性之間的矛盾
因為分區(qū)容錯P的必然性,所以一致性C和可用性A無法同時成立。
?
如果保證 Server2的一致性,那么 Server1 必須在寫操作時,鎖定 Server2 的讀操作和寫操作。只有數(shù)據(jù)同步后,才能重新開放讀寫。鎖定期間,Server2 不能讀寫,這樣可用性就無法滿足。
如果保證 Server2 的可用性,那么就不能鎖定 Server2,所以一致性不成立。
綜上所述,Server2 無法同時做到一致性和可用性。系統(tǒng)設(shè)計時只能選擇一個目標(biāo)。如果追求強一致性,那么無法保證所有節(jié)點的可用性;如果追求所有節(jié)點的可用性,那就沒法做到強一致性。
?
總結(jié)
以上是生活随笔為你收集整理的分布式理论CAP定理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现归并排序
- 下一篇: java学习——JavaScript入门