2013-03-25 37 views
1

我想了解在Cassandra和Couchbase中實現的數據中心複製之間的區別。 它看起來像在卡桑德拉,如果我有兩個數據中心(DC),我的所有數據都在兩個複製。在Couchbase中,兩個DC擁有不同的數據,並且可以手動配置不同DC之間數據子集的複製。 這是正確的嗎?Cassandra數據中心複製與Couchbase數據中心複製

客戶端如何知道數據在Couchbase中的位置?如果我在DC2中查詢DC1數據,會發生什麼情況?

在Couchbase中,整個系統如何知道數據的複製位置?

預先感謝您!

回答

4

Couchbase交叉數據中心複製(XDCR)將源桶中的所有數據複製到目標桶(連續)。

如果您在舊金山數據中心的紐約數據中心和存儲區B中存在存儲區A,並且您將存儲區A中的XDCR配置爲存儲區B,則存儲區A中的所有數據都將複製到存儲區B.您無法配置任何附加過濾器。但是,這種複製只是一個方向。因此,如果您也直接將數據寫入存儲桶B,則不會在兩個數據中心都有數據。如果您希望在兩個數據中心都擁有所有數據,則還需要將存儲區B中的XDCR配置到存儲區A.這在手冊中稱爲雙向複製。在這2個羣集配置中,它會爲您提供所有數據中心的所有數據。

Couchbase客戶端SDK配置爲與單個羣集交談。這意味着客戶端必須知道要連接到哪個羣集,如果您的舊金山羣集在紐約羣集中存儲了不同的數據,則您的應用程序必須知道在哪裏查找數據。

對於高可用性用例,通常在區域之間建立雙向複製,並且應用程序被設計爲偏好集羣。部署在紐約附近的應用程序可能更喜歡紐約羣集。只要沒有問題,它就會讀取並寫入該羣集。如果出現問題,請說紐約數據中心關閉,應用程序可以通過切換到舊金山數據中心繼續運行。但是,所有這些邏輯都將在您的應用程序中。

Robin提到的「智能集羣映射」用於查找單個集羣內的數據。理解這一點很重要,不會找到存儲在不同地區的數據。

+0

非常感謝!這是我正在尋找的詳盡答案!我是在要求它準備一篇論文的相關工作。不幸的是很難找到這個Couchbase行爲的參考。你能否提出任何涉及它的文件? – cesare 2013-03-27 12:02:21

+1

您可能已經查閱了[手冊](http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-admin-tasks-xdcr.html)。此外,您可以觀看[網絡研討會](http://info.couchbase.com/2013-webinar-couchbase-and-cross-datacenter-replication.html)。 – mschoch 2013-03-27 15:54:32

1

在Couchbase中,交叉數據複製將桶工作到桶。 Couchbase允許兩種類型的複製 - 雙向和單向。如果您使用Bi-Directional,則兩個數據集都將是相同的。如果使用Uni-Directional,理論上可以有一個數據集大於另一個,但通常不會。

客戶端SDK知道數據在Couchbase中的位置,因爲它使用智能Cluster Map。此羣集映射會始終跟蹤數據的位置,因此會將請求發送到正確的節點。

+0

謝謝!所以每個客戶都有一個完整的地圖數據存儲位置,對嗎?如果是這樣,客戶如何選擇更接近的數據中心?這對客戶來說是不是透明的,對嗎? – cesare 2013-03-25 14:45:22

+1

是的,在當前版本的couchbase 2.0.x中,存儲桶的所有數據都被複制到目標集羣。 – 2013-03-26 13:24:27