Кластер против репликации

У меня есть случай использования, когда я ищу репликации одной базы данных на нескольких серверах (для целей высокой доступности и масштабируемости),

Будет ли какой-либо недостаток запускать реплику из 3 узлов вместо кластера из 3 узлов?

2 ответа

Решение

Документация Couchdb 11.2 предоставляет пример конфигурации кластера:

[cluster]
  q=8
  r=2
  w=2
  n=3

q - количество осколков

r - число копий документа с той же ревизией, которые должны быть прочитаны, прежде чем CouchDB вернется с 200 и документом. Если доступна только одна копия документа, то возвращается 200.

w - число узлов, которым необходимо сохранить документ, прежде чем запись будет возвращена с 201. Если число узлов, сохраняющих документ, равно 0, возвращается 202.

n - количество копий каждого документа. Реплики.

Поведение вашей реплики из 3 частей должно быть эквивалентно:

[cluster]
  q=1
  r=1
  w=1
  n=3

при репликации правильно. Это возможная конфигурация кластеризации, но не оптимальная, так как в ней отсутствует:

  • преимущество подтверждения того, что несколько узлов и большинство узлов подтвердили сохранение до его подтверждения.

  • преимущество подтверждения того, что несколько узлов и большинство узлов подтвердили правильность ревизии перед ее возвратом.

  • Расширяемость базы данных за пределы хранилища одного узла с помощью шардинга.

  • Возможность изменения любой конфигурации, эквивалентной параметрам кластера с q, r или w > 1 без переключения на кластер.

Косвенно, ограничения на подтверждения создают больше потенциальных конфликтов для разрешения между репликами, если реплики фактически используются для масштабируемости сети, и больше шансов на фактическое несоответствие в форме потерянных записей, если узел отказывает между подтверждением сохранения и передачей его в другие реплики.

Какую версию CouchDB вы будете использовать? Если 2.0.0+, вероятно, нет причин не использовать истинную кластеризацию.

Единственная причина, по которой я могу использовать реплики вместо кластеризации, заключается в простоте настройки или в том, что ваша база данных (то есть CouchDB < 2.0.0) не поддерживает ее.

Но если вы используете кластеризацию, даже на 3 узлах сейчас, вы уже настроены на большее расширение позже, просто добавив больше узлов.

Есть ли причина, по которой вы не хотите использовать кластер?

Другие вопросы по тегам