Вопрос проверяет понимание фундаментальной теоремы распределенных систем.
CAP описывает три свойства:
Consistency - все узлы видят одинаковые данные
Availability - система всегда отвечает
Partition tolerance - работает при разрывах связи
Система может гарантировать только 2 из 3 свойств.
Определения:
Согласованность (Consistency)
Все узлы имеют одинаковое представление данных
Чтение возвращает последнюю записанную версию
Доступность (Availability)
Система всегда отвечает на запросы
Даже если некоторые узлы недоступны
Устойчивость к разделению (Partition tolerance)
Система продолжает работать при разрыве связи между узлами
Сеть ненадежна по определению (Fallacies of Distributed Computing)
Примеры систем:
CA: PostgreSQL (в одном датацентре)
CP: MongoDB, Redis (при партишенах жертвует доступностью)
AP: Cassandra (жертвует мгновенной согласованностью)