我讀過很多關於CAP定理的文章。我明白A,C,P的含義,當我們遇到網絡通信問題時我們該怎麼辦。「可用性」如何在CAP定理中起作用。 AP裏面出
總之,我們有這樣的情況:
如果兩個節點在集羣通信問題:
在這一刻,當出現問題,我們可以允許節點不同步(放棄一致性),或
此時,發生問題時,禁用節點一段時間(放棄可用性 - 禁止從檢測到通信問題的節點讀取/寫入)。
利用這一點,我們有這樣的情況:
1)CA - 如果發生通信故障,數據是不同步的,因爲我們有「可用性」,我們沒有禁用哪些有問題的節點。但同步將開始通信將得到解決。
2)CP - 如果發生通信故障,節點將被禁用(寫入/讀出不能進行本節點)
3)AP - 如果發生通信故障,數據不同步了。 但由於我們沒有C,我們無法保證同步後的數據會一樣。
AP對我來說不是很清楚,爲什麼我們不能保證數據在同步後會保持不變?我知道,因爲CAP定理告訴我們這一點,因爲我們沒有C但是...這是不夠的,這並不能告訴我們在技術上真的發生了什麼......
這是一個廣泛的問題,因爲它取決於實施。例如Cassandra使用[閱讀修復](http://wiki.apache.org/cassandra/ReadRepair)。布魯爾還談到了一般的恢復[這裏](http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed)(請參閱「分區恢復」和) – LMeyer 2014-10-08 14:58:45
此刻,是否有任何有CP和AP的DB? – grep 2014-10-08 15:06:36
看到我的另一個問題[問題](http://stackoverflow.com/questions/16779348/does-the-cap-theorem-imply-that-acid-is-not-possible-for-distributed-databases/16779594# 16779594)。然而,有人會說谷歌扳手,但我們不是谷歌所以... – LMeyer 2014-10-08 15:12:47