Модели консистентности
Вопрос
Какие модели консистентности вы знаете и как выбирать между ними?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Линеаризуемость: как одна копия, дорого по задержке
Read-your-writes и монотонное чтение: гарантии для одного клиента
Причинная: следствия видны после причин
Eventual: реплики сходятся со временем
Выбор по цене ошибки для бизнеса, разный для разных данных
Что могут спросить следом
- Как обеспечить монотонное чтение при нескольких репликах?
- Пример, где нужна причинная консистентность?
Разбор
Самая строгая линеаризуемость: система ведёт себя как одна копия, любое чтение видит последнюю запись. Она нужна для балансов, уникальности, блокировок, но стоит задержки на согласование. Слабее гарантии для одного клиента: read-your-writes, когда я вижу свои изменения, и монотонное чтение, когда данные не откатываются назад между запросами. Их дают, привязывая пользователя к реплике или читая с лидера после записи. Причинная гарантирует порядок связанных событий: ответ в чате не появится раньше вопроса. Eventual самая дешёвая: реплики сходятся когда-нибудь, годится для лайков и счётчиков. Выбираю по данным, а не одну на систему.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.