为什么CAP不能同时满足的简单理解
為什么CAP不能同時滿足的簡單理解
cap定理:前提是分布式系統(tǒng)中,cap三個只能滿足兩個,不能同時滿足三個特性。
Consistency (一致性):所有節(jié)點在同一時間的數(shù)據(jù)都是完全一致的。
Availability (可用性):服務一直是可用的。
Partition Tolerance (分區(qū)容錯性): 分布式系統(tǒng)在某個節(jié)點或分區(qū)故障時,仍然能對外提供滿足一致性或可用性的服務。
cap只能取其二,不能三者皆得,為什么,我來解釋下:
首先說分區(qū)容錯性,基本上分布式系統(tǒng)都要滿足這個,否則當某個節(jié)點掛了,就不對外提供服務了,那還能叫分布式系統(tǒng)么,掛一個就都掛了,那就是單機系統(tǒng)啊,分布式就沒意義了。
好了,那么如果一般情況下都要滿足分區(qū)容錯性,那么就看看一致性和可用性能不能再同時滿足。
比如說有3臺機器ABC,正常情況下,3臺機器互相數(shù)據(jù)同步,對外提供服務
如果某一時刻,A機器和BC機器斷開了,那么應該怎么辦?
要么就是繼續(xù)都對外提供服務,那么此時就會出現(xiàn)ABC三臺機器對外數(shù)據(jù)不一致的情況,這就是滿足了可用性,但不滿足一致性
另一種情況就是一旦發(fā)現(xiàn)機器不可用了,就暫停對外服務,直到ABC互相連通,再對外提供服務,這就是滿足了一致性,但不滿足可用性了,因為暫定服務這段時間服務就不可用了
所以說這種情況下,同時要滿足可用性和一致性是不可能的,具體舍棄哪個,得看業(yè)務情況
一般情況下,比如銀行業(yè)務,首要的是數(shù)據(jù)一致性,只要數(shù)據(jù)不一致,哪怕對外停止服務,也要數(shù)據(jù)一致,所以會考慮CP
而秒殺業(yè)務,首要的更多是可用性,所以會適當放棄數(shù)據(jù)一致性,大不了用戶看到有貨,但下訂單付款的時候失敗了,這種事也算勉強正常吧,所以這種業(yè)務會考慮AP
總結
以上是生活随笔為你收集整理的为什么CAP不能同时满足的简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [python]---从java到pyt
- 下一篇: sed 删除某一行_Linux常用命令三