Объясните CAP
Вопрос
Объясните CAP-теорему на практическом примере.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Три свойства: консистентность (линеаризуемость), доступность, устойчивость к разделению
Разделение неизбежно, выбор CP или AP делается в момент разделения
Пример CP: система с лидером и кворумом отказывает в записи без большинства
Пример AP: корзина или лайки принимают запись, позже сливают
C в CAP не равна C в ACID; PACELC про задержку в нормальном режиме
Что могут спросить следом
- К какому типу отнести PostgreSQL с асинхронной репликой?
- Что такое PACELC?
Разбор
CAP говорит: если сеть между узлами разорвалась, система должна выбрать, отвечать ли на запросы, рискуя отдать устаревшие данные, или отказывать, пока связь не восстановится. Пример: два дата-центра с репликами, связь пропала. CP-система, как etcd или ZooKeeper, позволит писать только той части, где большинство узлов, другая вернёт ошибку. AP-система, как корзина в духе Dynamo, примет запись в обоих местах и позже сольёт версии. Выбор зависит от данных: для балансов CP, для лайков AP. Важно, что C тут линеаризуемость, а не C из ACID. А PACELC добавляет: даже без сбоев мы выбираем между задержкой и консистентностью.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.