Что такое CAP теорема

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