Cassandra

多個數據中心中的 Cassandra - EC2MultiRegionSnitch

  • June 21, 2013

我正在閱讀來自:http ://www.datastax.com/docs/1.0/cluster_architecture/replication#networktopologystrategy 的文章,我有一個關於EC2MultiRegionSnitch的問題。我沒有很好地理解它。根據文章:如果應用程序向節點請求數據,但該節點沒有數據,但數據在另一個數據中心的另一個節點中,應用程序可以獲取嗎?

讓我們先了解多個數據中心的數據分佈。如果你有兩個數據中心——基本上每個數據中心都有完整的數據。如果您為每個數據中心設置了複製因子,例如 2 - 這意味著每個數據中心將擁有 2 個數據副本。這就是將令牌分配給節點的重要因素,以確保沒有節點負擔過重。從 datastax網站查看這張圖片:

在此處輸入圖像描述

你看到T0並且T3比其他人更胖。如果您看到整個集群,似乎數據必須是均勻分佈的……但事實並非如此。每個數據中心都可以看作是環內的虛擬環。:) 你看到下面的圖片了嗎?現在你意識到那T0是攜帶數據范圍(T2, T0]T3載入(T5, T3]!但事實上,一切都在數據中心內,在任何陽光明媚的日子裡,您不需要從其他數據中心獲取數據,除非您擁有ALLEACH_QUORUM(或 CL 超過數據中心上的副本數量)作為您的一致性級別

因此,回答您的問題:在多數據中心設置中,您將始終在每個數據中心擁有數據(假設設置了正確的複制因子)。如果您的一致性級別需要從其他數據中心讀取/寫入以滿足一致性級別,則協調節點(您的客戶端連接到的節點)將與其他數據中心中的節點通信。在 EC2 中,每個區域都是一個數據中心,每個可用區都被視為機架。

關於 Cassandra 的標準實現,答案是肯定的。因此,無論數據中心如何,集群中的所有內容都可以訪問。

Apache Cassandra 站點

Cassandra 對跨多個數據中心進行複制的支持是同類最佳的,為您的使用者提供更低的延遲,並且讓您高枕無憂,因為您知道自己可以在區域性中斷中倖免於難。

您所引用的站點正在談論他們執行的稱為分區的服務,在該服務中,他們實際上是根據分區方案以不同的方式分發數據,同時仍使用 Cassandra 作為數據庫。他們基於 NetworkTopologyStrategy 進行複制,這取決於網路和數據中心的數量。

關於 Amazon EC2 ,他們混合了一些術語,這就是混亂的來源。

… 在 Amazon EC2 上,集群中的所有節點都在一個區域內。該區域被視為數據中心,可用區被視為數據中心內的機架。

所以在亞馬遜的網路上,一個區域將包含多個數據中心,但他們正在分發資訊,就像它是本地數據中心一樣(可能是因為他們的網路有大量的資源和節點)。此處的此文件更深入地介紹了其網路的可用區概念。基本上他們的網路拓撲比大多數網路大一點。

數據應該保留在他們正在考慮的數據中心中,但是這是否是同一個物理數據中心取決於機架的數量、它們正在執行的機器類型和主幹(OC-3、OC -12、OC-48 等行)在它們之間移動。如果您所在的區域無法快速跨多個數據中心進行複制,他們可能會在物理數據中心本身中擁有更多冗餘。

引用自:https://dba.stackexchange.com/questions/45020