Cloudant / couch db 双向复制 - 是什么阻止了递归?

Cloudant / couch db Two way replication - what prevents recursiveness?

我们在两个独立的集群上有两个 cloudant 数据库 A 和 B。我们在这些数据库之间设置了双向复制,所以 A->B 和 B->A。

1) 如果文档 X 在 A 上更新,它会被复制到 B。但是 B 上的这个更改不会再次复制回 A。因此它不会进入无限递归循环。这是使用修订号实现的吗?我相信它可能是 couchdb 内部的。

2) 我们需要通过查看 A 和 B 中的文档来弄清楚哪个数据库实际通过 API 调用接收到更新,哪个数据库通过复制接收到更新。有办法解决这个问题吗?

  1. CouchDB replication protocol 定义明确,确保复制以可靠的方式完成。

  2. CouchDB 没有大师的概念。同步后,所有 CouchDB 实例都是相同的,因此无法确定哪个节点收到了原始请求。如果您需要这样做,您可能应该重新评估复制是否是您真正想要的。