2

我试图了解在 Cassandra 和 Couchbase 中实现的数据中心复制之间的区别。看起来在 Cassandra 中,如果我有两个数据中心(DC),我的所有数据都会在两个数据中心中复制。在 Couchbase 中,两个 DC 保存不同的数据,并且可以手动配置在不同 DC 之间复制数据子集。这是对的吗?

客户如何知道数据在 Couchbase 中的位置?如果我在 DC1 中查询 DC2 中的数据,会发生什么?

在 Couchbase 中,整个系统如何知道数据的复制位置?

先感谢您!

4

3 回答 3

4

Couchbase 跨数据中心复制 (XDCR) 将所有数据从源存储桶复制到目标存储桶(连续)。

如果您在纽约数据中心有存储桶 A,在旧金山数据中心有存储桶 B,并且您将 XDCR 从存储桶 A 配置到存储桶 B,则存储桶 A 中的所有数据都会复制到存储桶 B。您无法配置任何其他过滤器。然而,这种复制只是一个方向。因此,如果您还将数据直接写入存储桶 B,您将不会在两个数据中心中拥有所有数据。如果你想同时拥有两个数据中心的所有数据,你还需要配置从bucket B到bucket A的XDCR。这在手册中称为双向复制。在这 2 个集群配置中,它将为您提供所有数据中心中的所有数据。

Couchbase 客户端 SDK 配置为与单个集群通信。这意味着客户端必须知道要连接到哪个集群,如果您的纽约集群中存储的数据与旧金山集群不同,您的应用程序必须具有知道在哪里查找数据的逻辑。

对于高可用性用例,通常在区域之间设置双向复制,并且应用程序被设计为首选集群。部署在纽约附近的应用程序可能更喜欢纽约集群。只要没有问题,它就可以读取和写入该集群。如果出现问题,比如纽约数据中心出现故障,应用程序可以通过切换到旧金山数据中心继续运行。但同样,所有这些逻辑都将在您的应用程序中。

Robin提到的“智能集群图”是用来在单个集群内查找数据的。重要的是要理解这不会定位存储在不同区域的数据。

于 2013-03-26T14:24:35.163 回答
2

请注意,最新版本的 Couchbase(4.0 和更高版本)XDCR 确实允许过滤。键名上的简单正则表达式允许选定的数据子集可以在数据中心之间复制。在http://developer.couchbase.com/documentation/server/4.0/xdcr/xdcr-filtering-setup.html查看更多信息

于 2016-10-20T21:25:26.080 回答
1

在 Couchbase 中,跨数据复制工作桶到桶。Couchbase 允许两种类型的复制 - 双向和单向。如果您使用双向,两个数据集将是相同的。如果您使用单向,理论上您可以拥有一个比另一个大的数据集,但通常不会。

客户端 SDK 知道数据在 Couchbase 中的位置,因为它使用智能集群映射。该集群映射始终跟踪数据所在的位置,从而将请求发送到正确的节点。

于 2013-03-25T13:09:59.530 回答