CAP-теорема и компромиссы
при сетевом разделении система может выбрать только согласованность или доступность, но не оба.
Почему это важно: Без понимания CAP инженеры выбирают БД и архитектуру по моде, а не по требованиям к согласованности и доступности.
Главная идея
Network partitions неизбежны — выбирайте, что важнее: ответить устаревшими данными или не ответить вовсе.
Как это выглядит на практике
- В кластере БД произошёл сетевой раздел: ноды не видят друг друга.
- CP-система (Postgres с синхронной репликацией) — отказывает в записи на split node.
- AP-система (DynamoDB) — продолжает принимать запись, но данные могут разойтись.
- Восстановление сети требует разрешения конфликтов в AP-системе.
Что происходит под капотом
- C — Consistency: все ноды видят одни данные одновременно.
- A — Availability: каждый запрос получает ответ (не обязательно свежий).
- P — Partition tolerance: система работает при сетевых разделениях.
- В реальности P неизбежен, поэтому выбор всегда между C и A.
- PACELC: даже без раздела есть выбор между latency и consistency.
Типичные ошибки и заблуждения
- Ошибка: CAP — это про обычные работающие системы. Это про поведение во время split brain.
- Ошибка: можно получить все три. Сетевые разделы случаются, и тогда выбор обязателен.
- Ошибка: NoSQL = AP всегда. DynamoDB поддерживает strong consistency для некоторых операций.
- Ошибка: SQL = CP всегда. С асинхронной репликацией Postgres может стать AP.
Ключевые выводы
- Network partitions неизбежны.
- Выбор всегда между C и A под P.
- PACELC расширяет CAP на нормальный режим работы.
- Каждая БД делает свой компромисс — изучите его.
Термины урока
Связь с работой backend-разработчика
CAP — это инструмент мышления, а не школьная теорема. Без него невозможно осознанно выбирать БД и архитектуру для распределённых систем.
Мини-разбор реальной ситуации
Команда выбрала AP-БД 'для скорости' и обнаружила, что счета банковских клиентов могут расходиться при отказах сети. Пришлось менять архитектуру.
Что запомнить
- Раздел неизбежен — выбирайте C или A.
- PACELC шире CAP.
- БД отличаются именно компромиссами.
Итог
CAP-теорема — точка отсчёта в проектировании распределённых данных. Игнорировать её — значит обрекать систему на сюрпризы при первом сбое сети.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.