2014-10-08 67 views
0

我讀過很多關於CAP定理的文章。我明白A,C,P的含義,當我們遇到網絡通信問題時我們該怎麼辦。「可用性」如何在CAP定理中起作用。 AP裏面出

總之,我們有這樣的情況:

如果兩個節點在集羣通信問題:

  1. 在這一刻,當出現問題,我們可以允許節點不同步(放棄一致性),或

  2. 此時,發生問題時,禁用節點一段時間(放棄可用性 - 禁止從檢測到通信問題的節點讀取/寫入)。

利用這一點,我們有這樣的情況:

1)CA - 如果發生通信故障,數據是不同步的,因爲我們有「可用性」,我們沒有禁用哪些有問題的節點。但同步將開始通信將得到解決。

2)CP - 如果發生通信故障,節點將被禁用(寫入/讀出不能進行本節點)

3)AP - 如果發生通信故障,數據不同步了。 但由於我們沒有C,我們無法保證同步後的數據會一樣。

AP對我來說不是很清楚,爲什麼我們不能保證數據在同步後會保持不變?我知道,因爲CAP定理告訴我們這一點,因爲我們沒有C但是...這是不夠的,這並不能告訴我們在技術上真的發生了什麼......

+1

這是一個廣泛的問題,因爲它取決於實施。例如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

+0

此刻,是否有任何有CP和AP的DB? – grep 2014-10-08 15:06:36

+0

看到我的另一個問題[問題](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

回答

0

AP基本上意味着系統將繼續採取更新。 假設更新正在發送到從服務器S2分區的服務器S1。 S1將能夠提供新的價值,但S2仍然會顯示陳舊的價值。 儘管一旦分區消失,CAP定理並不談論收斂,但是有很多方法可以構建系統發佈網絡分區。我們可以使用CRDT(無衝突複製數據類型),也可以使用補償事務。 埃裏克布魯爾在下面的文章中寫到這個 - CAP 12 Years

相關問題