CouchDB集群与Docker Swarm中的复制

时间:2018-09-12 07:21:39

标签: docker couchdb cluster-computing docker-swarm

我一直在寻找具有最终一致性的NoSQL数据库,该数据库可用于我的小型docker swarm项目。这是一项异构服务,因此我有一个docker-compose.yml文件,我将使用docker stack deploy -c docker-compose.yml将其分发到群组。

小表示我的群组设置通常包含2个工作程序节点。有时,我会将相同的服务(或对docker-compose.yml文件进行很小的更改)部署到具有3个工作程序节点的群集中,有时甚至是4-n。

运行CouchDB的容器正在以主机联网模式公开端口。在工作节点上运行的软件可以始终使用localhost连接到CouchDB。

我的目标是建立一个CouchDB设置,该设置允许n-1(除一个以外的所有)工作节点中断。我没有向数据库写入/读取大量数据。我期望每小时添加/修改一些文档。即使是完全的数据丢失也不会造成太大的损失,因为在群集中运行的软件可以重新创建其文档。应该使用CouchDB向外界共享所有群集工作的“公共状态”。我什至不希望发生冲突。每个节点“拥有”自己的一组文档。

Cluster vs replication上发布了一个类似的问题,这暗示了将群集用于大于2.0.0的CouchDB版本。群集的设置为:

[cluster]
    q=1
    r=1
    w=1
    n=2 # or 3 or 4-n, depending on the number of worker 

我不太确定,因为似乎rthere中提到的w被弃用了,但是在Cluster Theory的文档中仍然涵盖了这些参数。 create数据库时,似乎无法指定r和w。

据我了解,如果您不能确保将rw设置为1,将无法使用CouchDB集群来达到我的目标。如果某些节点出现故障,您甚至可能无法从数据库进行写入或读取。

所以我的问题是:

  • 究竟还是可以建议使用rw(出于我的目的)?
  • 我应该手动在2、3,n个节点之间设置主-主复制,而不使用群集吗?

0 个答案:

没有答案