Какие промежуточные гарантии находятся между строгой и итоговой согласованностью?
- Что такое read-your-writes?
- Что такое причинная согласованность?
Согласованность — спектр: между линеаризуемостью и итоговой лежат read-your-writes, монотонные чтения, причинная согласованность.
- Read-your-writes — автор сразу видит своё
- Монотонные чтения — обновление страницы не «откатывает» данные назад
- Причинная — ответ не появляется раньше вопроса
А ещё Чаще всего достаточно промежуточной гарантии, а не строгой согласованности везде
Подробно
Главная практическая мысль в том, что строгая согласованность нужна далеко не везде, а полностью итоговая часто неприемлема с точки зрения пользовательского опыта. Чаще всего достаточно промежуточной гарантии: человек должен немедленно увидеть собственный комментарий, тогда как чужие могут появиться с задержкой — это ровно read-your-writes, и реализуется она направлением чтений этого пользователя на узел записи или чтением из модели записи. Монотонные чтения защищают от эффекта, когда обновление страницы показывает более старое состояние из-за попадания на отставшую реплику. Одномоментного обновления всех узлов не бывает — распространение изменений всегда занимает время, поэтому такой гарантии не существует.
Что хотят услышать
- Названия и смысл промежуточных гарантий.
- Как реализуется каждая (лидер для своих данных, привязка к реплике, версии).
- Выбор гарантии по требованиям продукта.
Частые ошибки
- Выбирать между двумя крайностями, не рассматривая промежуточные варианты.
- Обещать пользователю мгновенную видимость на реплике для чтения.
Проверьте себя
Несколько верных вариантов. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Атомарная согласованность: все узлы применяют обновление в одно и то же мгновение
- ✓Read-your-writes: пользователь видит собственные изменения
- ✓Monotonic reads: состояние не «откатывается» между чтениями
- ✓Причинная: связанные операции видны в правильном порядке
Что спросят дальше
- Как технически обеспечить read-your-writes?
- Почему пользователь может увидеть более старые данные при обновлении страницы?
Разбор темы
- CAP и согласованность
Точная формулировка CAP и типичные искажения, неизбежность разделения и выбор C/A по операции, спектр согласованности и сессионные гарантии, кворумы N/R/W и их пределы, PACELC и разрешение конфликтов.
Связанные вопросы
- Пользователь сохранил изменения, обновил страницу — а изменений нет. Что происходит и как это исправить? Middle
- Что описывает eventual consistency? Middle
- Пользователь публикует комментарий и должен сразу видеть его в ленте, а остальным допустима задержка в несколько секунд. Какие гарантии согласованности вы заложите и как это реализуете? Middle
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.