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