2015-10-09 1 views
4

TL; DR
Если узел реплики идет вниз и новая карта раздела не доступна, будет прочитанный с уровнем согласованности = ALL терпят неудачу?Aerospike - чтение (с уровнем согласованности ALL), когда одна реплика вниз

Пример:

Учитывая это Aerospike настройки кластера:
- 3 физические узлы: А, В, С
- Реплики = 2
- Read уровень согласованности = ALL (читает проконсультироваться и узлы, держащие данные)

И эта последовательность событий:
- Часть данных «DAT» хранится в двух узлах, A и B
- Узел B спускается вниз.
- Сразу после того, как B опускается, запрос на чтение («запрос 1») выполняется с согласованием ALL.
- Через ~ 1 секунду создается новая карта разделов. Теперь кластер осознает, что B ушел.
- «DAT» теперь реплицируется в узле C (для сохранения реплик = 2).
- Другой запрос на чтение («запрос 2») выполняется с согласованием ALL.

Разумно сказать, что «запрос 2» будет успешным.

Будет ли «запрос 1» успешным? Будет ли это:
a) Успешно, потому что два чтения были предприняты, даже если один узел был опущен?
b) Неудача, поскольку один узел был выключен, что означает, что доступна только 1 копия «DAT»?

ответ

4

Запрос 1 и запрос 2 преуспеют. Ниже описывается поведение политик уровня согласованности: https://discuss.aerospike.com/t/understanding-consistency-level-overrides/711.

Суть для чтения/записи уровня согласованности является то, что они применяются только при наличии нескольких версий данного раздела в рамках кластера. Если в кластере имеется только одна версия данного раздела, чтение/запись будет идти только на один узел независимо от уровня согласованности.

  1. Поэтому, учитывая кластер Aerospike из A, B, C, где А является мастером и В является репликой для раздела 1.
  2. Предположит, В и С не может теперь реплики для раздела 1. Раздела 1 получают запись и изменение ключа раздела.
  3. Теперь B перезапускается и возвращается в кластер. Раздел 1 на B будет теперь быть отличным от A и C.
  4. Чтение прибывает с согласованностью все в узел A для ключа в разделе 1 и теперь в кластере есть 2 версии этого раздела. Мы прочтем запись из узлов А и В и вернуть последнюю версию (не обязательно чтения).

Время покадровой

  1. Миграции завершена, для раздела 1, А хозяин, В не является точной копией и С больше не имеет перегородку.
  2. для чтения приходит с последовательностью всех к узлу A. Поскольку существует только один вариант раздела 1, узел А отвечает клиенту без узла B. консультационного
+1

Спасибо за четкое описание. – Aaron

Смежные вопросы