Продвинутый

CAP-теорема и компромиссы

Урок 1 из 3 в курсе Распределённые системы: основы

Содержание курса (1/3)

CAP-теорема и компромиссы

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

Почему это важно: Без понимания CAP инженеры выбирают БД и архитектуру по моде, а не по требованиям к согласованности и доступности.

Главная идея

Network partitions неизбежны — выбирайте, что важнее: ответить устаревшими данными или не ответить вовсе.

Как это выглядит на практике

  1. В кластере БД произошёл сетевой раздел: ноды не видят друг друга.
  2. CP-система (Postgres с синхронной репликацией) — отказывает в записи на split node.
  3. AP-система (DynamoDB) — продолжает принимать запись, но данные могут разойтись.
  4. Восстановление сети требует разрешения конфликтов в 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 на нормальный режим работы.
  • Каждая БД делает свой компромисс — изучите его.

Термины урока

Consistency: все ноды видят одинаковое состояние.
Availability: каждый запрос получает ответ.
Partition tolerance: устойчивость к сетевым разделам.
Split brain: ситуация, когда разделённые ноды считают, что они главные.

Связь с работой backend-разработчика

CAP — это инструмент мышления, а не школьная теорема. Без него невозможно осознанно выбирать БД и архитектуру для распределённых систем.

Мини-разбор реальной ситуации

Команда выбрала AP-БД 'для скорости' и обнаружила, что счета банковских клиентов могут расходиться при отказах сети. Пришлось менять архитектуру.

Что запомнить

  • Раздел неизбежен — выбирайте C или A.
  • PACELC шире CAP.
  • БД отличаются именно компромиссами.

Итог

CAP-теорема — точка отсчёта в проектировании распределённых данных. Игнорировать её — значит обрекать систему на сюрпризы при первом сбое сети.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.