Что означает буква P в теореме CAP?

«Что означает буква P в теореме CAP?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В теореме CAP (Consistency, Availability, Partition tolerance) буква P означает Partition tolerance — устойчивость к разделению (partition) сети.

Это свойство распределённой системы продолжать функционировать, несмотря на произошедший сетевой сбой, который приводит к потере сообщений между узлами или разделению сети на изолированные сегменты.

Ключевые аспекты:

  • P считается неизбежной в реальных распределённых системах, так как сетевые сбои — это вопрос времени, а не возможности.
  • Теорема CAP утверждает, что в условиях разделения сети (P) система может гарантировать либо C (консистентность), либо A (доступность), но не оба свойства одновременно.
  • На практике системы часто выбирают компромисс, например, модель PACELC, которая расширяет CAP, учитывая поведение и при отсутствии разделения.

Пример выбора при разделении:

// Упрощённая логика узла при обнаружении сетевого раздела
if (isNetworkPartitioned()) {
    // Выбор стратегии в зависимости от конфигурации системы:
    // 1. Гарантировать консистентность (C) — отклонить запрос или вернуть ошибку.
    // 2. Гарантировать доступность (A) — обслужить запрос, используя локальные (возможно, устаревшие) данные.
    return systemPolicy == Policy.CONSISTENCY ? throw new ConsistencyException() : serveLocalData();
}

Вывод: P — это фундаментальное ограничение среды, которое заставляет архитекторов делать осознанный выбор между консистентностью и доступностью.