我一直在寻找具有最终一致性的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
我不太确定,因为似乎r
和there中提到的w
被弃用了,但是在Cluster Theory的文档中仍然涵盖了这些参数。 create数据库时,似乎无法指定r和w。
据我了解,如果您不能确保将r
和w
设置为1
,将无法使用CouchDB集群来达到我的目标。如果某些节点出现故障,您甚至可能无法从数据库进行写入或读取。
所以我的问题是:
r
和w
(出于我的目的)?