Теорема CAP

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

В любой распределённой системе невозможно одновременно обеспечить все три из следующих свойств:

  1. Consistency (Согласованность)
    Все узлы видят одинаковые данные в одно и то же время.
  2. Availability (Доступность)
    Каждый запрос получает корректный отклик (не обязательно самый свежий), даже если некоторые узлы системы недоступны.
  3. Partition tolerance (Устойчивость к разделению)
    Система продолжает работать, несмотря на разделение сети (network partition), когда сообщения между частями кластера теряются или задерживаются.

Визуальное представление:

CAP часто изображают в виде треугольника, где каждая вершина — одно из свойств. Система может гарантировать не более двух из трёх.

Возможные комбинации:

  • CP (Consistency + Partition tolerance)
    Система сохраняет согласованность и устойчивость к разделению, но может быть недоступна в момент сбоя.
    Пример: HBase, MongoDB (в некоторых конфигурациях)
  • CA (Consistency + Availability)
    Возможна только в системах без разделения сети — то есть в централизованных системах. В распределённых системах эта комбинация неустойчива к разделению.
  • AP (Availability + Partition tolerance)
    Система всегда отвечает, даже при разделении, но может вернуть устаревшие данные (нет строгой согласованности).
    Пример: Cassandra, Couchbase, DynamoDB

Важное уточнение:

Теорема CAP утверждает, что при наличии сетевой ошибки (разделения) система должна выбрать между согласованностью и доступностью.