Couchbase增值XDCR

问题描述 投票:0回答:1

如果我存储在像这样的couchbase的阵列状的结构:

mykey = 3
key_1 = 47
key_2 = 11
key_3 = 17

和我的更新过程是这样的:

a = increment(mykey)
set key_a = 42

将在水桶这项工作在多个数据中心复制吗?是否有这样做的更好的办法?

我在想,在不同的数据中心的两个客户端可能会在同一时间打电话增量,得到相同的值,然后设置相同的密钥不同的值。

couchbase
1个回答
1
投票

如果您使用XDCR,重复键的情况是可能的。而且,即使你之前设置校验值(使用couchbase.add操作),也可以产生两个相同的密钥。

在群集内,Couchbase Server提供了在文档级别很强的一致性。在另一方面,XDCR还提供了跨集群最终一致性。内置的冲突解决会挑上两簇相同的“赢家”如果同样的证明文件,这两个集群突变。如果发生冲突,最更新的文件将被认为是“赢家”。如果在同一个文档进行更新相同数量的源和目的,额外的元数据上的时代,作为数字序列,CAS值,文件标志和过期TTL值被用来挑选“赢家”。XDCR适用跨集群相同的规则,以确保文件保持一致性。

为了避免这种couchbase建议存储有关数据中心/群集的一些信息,或使用独特的键像的GUID。我认为,第二种方式是不优选的,因此你可以通过增加数据中心的位置的关键前缀实现的第一个和处理他们在应用端:

US-east.mykey_1
US-west.mykey_1
© www.soinside.com 2019 - 2024. All rights reserved.