3

我目前正在查看 CouchDB,并且我知道我必须手动指定所有复制。如果我想在 100 个节点上使用它,我将如何进行复制?

  • 在每个节点上执行 99 次“复制到”和 99 次“复制自”
    • 感觉有点过头了,因为节点复制包括所有其他节点复制到它
  • 做 1 次复制到下一个以形成一个圆圈(如 A -> B -> C -> A)
    • 会一直工作到一次崩溃,然后一切都等到它回来
    • 从第一个复制到最后一个的延迟会很大

有没有办法说:“这里有3个IP在全网。连接到他们,并像独立的P2P一样与大家分享你认为合适的”?

感谢您的洞察力

4

1 回答 1

1

BigCouch 不会提供开箱即用的跨数据中心的东西。Cloudant DBaaS(基于 BigCouch)确实已经跨多个数据中心进行了此设置。

BigCouch 是 Apache CouchDB 的分片“Dynamo 风格”分支——它将在未来合并到“主线”Apache CouchDB,fwiw。分片跨位于同一数据中心的节点(服务器)上。使用“经典”CouchDB 样式的复制(afaik)来保持各个数据中心中的 BigCouches 不同步。

CouchDB 风格的复制(n-master)是基于变更的,所以复制只包括最新的变更。

您需要为每个节点/数据库组合设置到/从复制对。但是,如果您的所有服务器都打算完全相同,那么复制实际上不会经常发生——它只会在需要时发生。

如果A发生更改,复制将其发送到BC(等)。但是,如果B- 刚刚获得该更改 - 将其复制到C之前A也有机会 - 由于网络延迟等 - 当A最终尝试时,它将意识到数据已经存在,并且不会打扰发送更改再次。

如果这是您设置的标准部分(即,每次创建数据库时,您都希望将其复制到其他任何地方),那么我强烈建议您自动化设置。

此外,检查 _replicator 数据库。管理正在发生的事情要容易得多: https ://gist.github.com/fdmanana/832610

希望里面的东西有用。:)

于 2013-04-12T13:18:26.647 回答