2013-03-25 79 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