Что такое CAP теорема?php-110

CAP теорема (также известная как теорема Брюера) — это фундаментальный принцип в распределённых системах, который утверждает, что невозможно одновременно обеспечить все три следующих свойства:

  1. Consistency (Согласованность)
    Все узлы системы видят одни и те же данные в один и тот же момент времени.
    Пример: После записи нового значения все последующие чтения возвращают это значение.

  2. Availability (Доступность)
    Каждый запрос к системе получает ответ (успешный или ошибка), но без гарантии, что данные актуальны.
    Пример: Система продолжает работать даже при отказе части узлов.

  3. Partition Tolerance (Устойчивость к разделению)
    Система продолжает функционировать, даже если между её узлами происходит обрыв связи (network partition).

Формулировка теоремы

Вы можете выбрать только 2 из 3 свойств одновременно.

Варианты комбинаций:

  1. CP (Согласованность + Устойчивость к разделению)

    • Система ждёт, пока все узлы синхронизируются, даже если это займёт время (например, PostgreSQL в строгом режиме репликации).
    • Риск: временная недоступность данных при сетевых проблемах.
  2. AP (Доступность + Устойчивость к разделению)

    • Система отвечает сразу, даже если данные не согласованы (например, Cassandra, DynamoDB).
    • Риск: возможны "конфликты" данных (например, в корзине интернет-магазина могут появиться различающиеся товары).
  3. CA (Согласованность + Доступность)

    • Работает только в идеальной сети без разделений (на практике почти не встречается).

Примеры в реальных системах

  • CP: MongoDB (в определённых конфигурациях), Zookeeper.
  • AP: Cassandra, Riak.
  • CA: Традиционные SQL-СУБД (MySQL, PostgreSQL) в пределах одного дата-центра.

Почему важно понимать CAP?

  • Помогает выбрать правильную БД для проекта.
  • Объясняет, почему распределённые системы иногда "теряют" данные или отвечают старыми версиями.
  • Критично для систем, где важны либо мгновенная согласованность (банки), либо бесперебойная работа (соцсети).

Мифы о CAP

  • "CAP означает, что надо всегда жертвовать одним свойством" — на практике системы часто переключаются между режимами (например, при восстановлении после разделения).
  • "CA-системы существуют" — они возможны только в идеальных условиях (например, один сервер).

Резюмируем:

CAP теорема — это компромисс в проектировании распределённых систем. Выбор между согласованностью, доступностью и устойчивостью зависит от требований вашего проекта. Например, для банка критична согласованность (CP), а для ленты новостей — доступность (AP).