Я искал базу данных NoSQL с возможной согласованностью, которую я мог бы использовать для своего небольшого проекта по созданию роя.Это гетерогенная служба, поэтому у меня есть файл docker-compose.yml
, который я собираюсь деплировать в рой, используя docker stack deploy -c docker-compose.yml
.
Малый, означает, что моя настройка роя обычно состоит из 2 рабочих узлов.Иногда я собираюсь развернуть ту же службу (или с очень небольшими изменениями в файле docker-compose.yml) в рое с 3 рабочими узлами, а иногда даже, может быть, с 4-ю.
контейнером, в котором работает CouchDBвыставляет порт в режиме сетевого хоста.Программное обеспечение, работающее на рабочих узлах, может всегда подключаться к CouchDB с помощью localhost.
Я стремлюсь к установке CouchDB, которая позволяет отключать n-1 (все, кроме одного) рабочих узлов.Я не пишу / не читаю много данных в базу данных.Я ожидаю добавить / изменить несколько документов в час.Даже полная потеря данных не причинит большого вреда, потому что программное обеспечение, работающее в рое, может воссоздать свои документы.CouchDB следует использовать, чтобы поделиться «общим состоянием» всех роевых работ с внешним миром.Я даже не ожидаю конфликтов.Каждый узел «владеет» своим собственным набором документов.
Аналогичный вопрос размещен на Cluster vs replication , который предлагает использовать кластер для версий CouchDB более 2.0.0.Настройка для кластера будет такой:
[cluster]
q=1
r=1
w=1
n=2 # or 3 or 4-n, depending on the number of worker
Я совершенно не уверен, потому что, кажется, что устарели r
и w
упомянутых там , но параметры все еще покрытыв документации по теории кластеров .Кажется, что вы не можете указать r и w, когда вы создаете базу данных.
Насколько я понимаю, вы не можете гарантировать, что r
и w
установлены на 1
было бы невозможно использовать кластер CouchDB, чтобы достичь того, к чему я стремлюсь.В случае выхода из строя некоторых узлов вы можете даже не иметь возможности писать или читать из базы данных.
Поэтому мои вопросы таковы:
- По-прежнему возможно или рекомендуюиспользовать
r
и w
(для моих целей)? - Стоит ли мне настраивать репликацию master-master между моими 2,3, n узлами вручную и не использовать кластер?