Что такое CAP теорема
Python
Middle
Без компании
Что такое CAP теорема
Ответы
**CAP-теорема** (теорема Брюера) — это фундаментальный принцип в распределённых системах, который гласит, что в любой такой системе можно гарантировать выполнение **только двух из трёх** свойств:
**- Согласованность (Consistency)**: Все узлы (ноды) системы видят **одни и те же данные в один и тот же момент времени**. Запись на один узел немедленно становится видна на всех остальных.
**- Доступность (Availability)**: Система **всегда отвечает** на запросы (даже если часть узлов недоступна). Каждый запрос получает ответ (успех или failure), но без гарантии, что данные актуальны.
**- Устойчивость к разделению (Partition Tolerance)**: Система **продолжает работать**, несмотря на сбои в сети, которые приводят к потере связи между узлами ("разделению" системы на части).
**Главный компромисс CAP**
Теорема утверждает, что при **сетевом разделении (Partition)** вы должны выбрать между **Согласованностью (C)** и **Доступностью (A)**.
**На практике это означает три выбора:**
**1. CA-системы (Согласованность + Доступность)**
**Жертвуют**: Устойчивостью к разделению.
**Как**: Это системы, которые работают только в идеальных сетевых условиях (например, классические однодемные БД). На практике истинно CA-систем не существует, так как сетевые сбои неизбежны.
**2. CP-системы (Согласованность + Устойчивость к разделению)**
**Жертвуют**: Доступностью.
**Как**: При сетевом разделении система заблокирует запись или чтение на некоторых узлах, чтобы гарантировать, что данные останутся согласованными. Она будет отвечать ошибкой или "подвиснет", ожидая восстановления связи.
**3. AP-системы (Доступность + Устойчивость к разделению)**
**Жертвуют**: Согласованностью.
**Как**: При разделении системы разные её узлы могут отдавать разные (несогласованные) данные. После восстановления связи система разрешит конфликты (например, с помощью механизмов последней записи или пользовательского разрешения конфликтов).
**Важное уточнение**
CAP-теорема часто понимается не совсем верно. Её ключевой момент:
**Выбор между C и A происходит только в условиях сетевого раздела (P).** В нормальном режиме работы система может обеспечивать все три свойства.
###