2016-03-08 63 views
0

我有一個Cassandra集羣,每個集羣有3個數據中心,每個節點有6個節點 - DC1,DC2和DC3 like this。假設我有一個NetworkTopologyStrategy,同時創建了一個密鑰空間,Cassandra:整個數據中心發生故障時會發生什麼?

CREATE KEYSPACE test WITH REPLICATION = {'class':'NetworkTopologyStrategy','DC1':3,'DC2':3,'DC3':3 }

它確保任何寫入都在每個數據中心的3個節點上覆制,只有寫入成功後纔會寫入。

如果整個數據中心出現故障,會發生什麼情況?

假設Dc3中的所有節點都關閉了!在這種情況下,即使使用寫一致性級別爲1的寫請求來更新表(一致性級別:必須將寫入寫入至少一個副本節點的提交日誌和memtable。我認爲它需要是寫入每個數據中心的至少一個節點)。會失敗嗎?此請求將嘗試更新DC3中的至少3個節點,因爲所有節點都處於關閉狀態,所以無法進行更新。

https://docs.datastax.com/en/cassandra/2.0/cassandra/architecture/architectureDataDistributeReplication_c.html

回答

1

如果您正在使用的其中一個寫入數據的一致性程度就不會失敗寫作。

說明:

你的密鑰空間指定保證會有你的每一行數據的9份每個數據中心3個副本。 當您在CONSISTENCY LEVEL of ONE編寫時,一旦數據寫入單個節點的memtable和commitlog(只有一個節點,而不是每個數據中心一個節點),協調器將會成功。

那麼複製品會發生什麼?數據存儲爲hinted hintoff(默認3小時),一旦節點啓動就會複製數據(在您的情況下,數據中心3啓動)。如果節點在3小時前沒有啓動,那麼它將嘗試使用builtin repair mechanism來修復數據。

這是確保所有寫入在每個 數據中心3個節點僅複製之後,寫入成功

,如果你是一致性LEVEL ONE寫你的這個說法根本經不起如此。

有關 Multiple Datacenter Write的更多詳情。在每個數據中心

三個副本:此配置在LOCAL_QUORUM或每使用一致性一級數據 中心的多個節點故障的強 一致性水平容忍 或者每複製組的一個節點的故障。