我正在尝试理解在Cassandra和Couchbase中实现的数据中心复制之间的区别。在Cassandra中,如果我有两个数据中心(DC),我的所有数据都会复制到这两个数据中心。在Couchbase中,两个DC保存不同的数据,并且可以手动配置为在不同DC之间复制数据子集。这是正确的吗?
客户端如何知道数据在Couchbase中的位置?如果我在DC2中查询DC1中的数据持有,会发生什么?
在Couchbase中,整个系统是如何知道数据被复制到哪里的?
提前谢谢你!
发布于 2013-03-26 22:24:35
Couchbase跨数据中心复制(XDCR)将所有数据从源存储桶(连续)复制到目标存储桶。
如果您在纽约数据中心有存储桶A,在旧金山数据中心有存储桶B,并且配置了从存储桶A到存储桶B的XDCR,则存储桶A中的所有数据都会复制到存储桶B。您无法配置任何额外的过滤器。然而,这种复制只是一个方向。因此,如果您还将数据直接写入存储桶B,则不会在两个数据中心中拥有所有数据。如果您希望将所有数据都放在两个数据中心中,您还需要配置从存储桶B到存储桶A的XDCR。这在手册中称为双向复制。在这个双集群配置中,它将为您提供所有数据中心中的所有数据。
Couchbase客户端SDK配置为与单个群集通信。这意味着客户端必须知道要连接到哪个集群,如果您在纽约集群中存储的数据与旧金山集群中存储的数据不同,则您的应用程序必须具有知道在何处查找数据的逻辑。
对于高可用性用例,通常在区域之间设置双向复制,并且将应用程序设计为首选集群。部署在离纽约更近的地方的应用程序可能更喜欢纽约集群。只要没有问题,它就会对该集群进行读写。如果出现问题,比如纽约数据中心停机,应用程序可以切换到旧金山数据中心继续运行。但是,所有这些逻辑都在您的应用程序中。
Robin提到的“智能集群映射”用于在单个集群中查找数据。重要的是要了解这将不会定位存储在不同区域的数据。
发布于 2016-10-21 05:25:26
请注意,较新版本的Couchbase (4.0及更高版本) XDCR确实允许过滤。键名称上的简单正则表达式允许在数据中心之间复制选定的数据子集。欲了解更多信息,请访问http://developer.couchbase.com/documentation/server/4.0/xdcr/xdcr-filtering-setup.html
发布于 2013-03-25 21:10:00
在Couchbase中,跨数据复制工作于Bucket到Bucket。Couchbase允许两种类型的复制-双向和单向。如果使用双向,两个数据集将是相同的。如果使用单向,理论上可以有一个比另一个大的数据集,但通常不会。
客户端SDK知道数据在Couchbase中的位置,因为它使用智能集群映射。该集群映射始终跟踪数据所在的位置,从而将请求发送到正确的节点。
https://stackoverflow.com/questions/15615092
复制相似问题