Получить доступ

В системе с N репликами при каком условии чтение гарантированно увидит последнюю подтверждённую запись?

MiddleCAP и согласованность
Ещё спрашивают так:
  • Что означает условие R + W > N?
  • Как работают кворумы в Cassandra?
Коротко

Если R + W > N, множества реплик для чтения и записи пересекаются — чтение застанет хотя бы одну реплику с последней подтверждённой записью.

  • N = 3: W = 2, R = 2 — переживает отказ одного узла и сохраняет гарантию
  • W = N, R = 1 — быстрое чтение, но запись ломается при любом отказе; W = 1, R = N — наоборот
  • R + W ≤ N — согласованность в конечном счёте, это законный выбор

А ещё Кворум даёт свежесть, но не линеаризуемость

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Правило даёт удобную ручку настройки. Строгий вариант W=N и R=1 делает чтение мгновенным, но запись ломается при отказе любой реплики. Обратный, W=1 и R=N, ускоряет запись ценой чтения. Симметричный компромисс при трёх репликах — W=2 и R=2: система переживает потерю одного узла и сохраняет гарантию. Уменьшение суммы ниже порога переводит систему в режим согласованности в конечном счёте, что вполне законно, если приложение к этому готово. Стоит проговорить и границы правила: оно про пересечение множеств, а не про полную защиту — при конкурентных записях всё равно нужны версии и разрешение конфликтов, а при сетевом разделении кворум может не собраться вовсе.

Что хотят услышать

  • Условие пересечения и почему оно работает.
  • Варианты настроек и их компромиссы.
  • Ограничение: это не линеаризуемость.

Частые ошибки

  • Считать кворум заменой механизму разрешения конфликтов.
  • Ставить W=N в системе, где важна доступность записи.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Когда W + R > N — множества узлов записи и чтения обязательно пересекаются хотя бы в одном узле
  • ✗Когда W = R
  • ✗Когда R = N независимо от W
  • ✗Когда W + R = N

Что спросят дальше

  • Как разрешают конфликты при конкурентных записях?
  • Что произойдёт с кворумом при сетевом разделении?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем