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

Что означает eventual consistency?

MiddleCAP и согласованность
Ещё спрашивают так:
  • Где допустима итоговая согласованность?
Коротко

Реплики со временем сойдутся, если записи прекратятся; сразу после записи разные читатели могут видеть разное. Компромисс ради доступности и скорости.

  • Подходит: ленты, счётчики, поиск, рекомендации, кэши
  • Не подходит: деньги, остатки, уникальность, бронирования
  • Смягчают гарантиями сессии: read-your-writes, монотонные чтения

А ещё Окно расхождения не гарантировано — под нагрузкой бывают секунды

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

Подробно

Это компромисс ради доступности и скорости: система всегда отвечает, но свежесть данных не гарантируется немедленно. Для лент и счётчиков обычно приемлемо, для денег — часто нет. Промежуточные гарантии (read-your-writes, monotonic reads) смягчают неудобства.

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

  • Определение через сходимость.
  • Где допустима и где нет.
  • Промежуточные гарантии.

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

  • Путать eventual consistency с полным отсутствием согласованности.
  • Применять её там, где нужна строгая корректность.

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

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

Показать варианты и ответ
  • ✓Реплики со временем сходятся, но сразу после записи читатели могут видеть разные версии
  • ✗Запись синхронно фиксируется на всех репликах до ответа клиенту
  • ✗Данные никогда не приходят к согласованному состоянию
  • ✗Транзакция выполняется целиком или не выполняется вовсе

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

  • Что такое read-your-writes consistency?
  • Как кворумы влияют на согласованность?

Разбор темы

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

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

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

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

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