TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #2478 1.24K
Основы системного дизайна

Теорема CAP: почему распределённые системы не могут иметь всё сразу

Представьте, что ваше приложение работает на нескольких серверах в разных городах.

Внезапно...

Сетевое соединение между серверами прерывается.

Теперь у системы есть выбор:
Продолжать принимать запросы?

Или отклонять запросы, пока всё не синхронизируется?

Именно эту проблему решает теорема CAP.

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

CAP означает:

C — Consistency (Согласованность)
Каждый пользователь видит одни и те же данные, независимо от того, к какому серверу подключился.

Пример: Перевод ₹1000. Каждый сервер сразу показывает обновлённый баланс.

A — Availability (Доступность)
Каждый запрос получает ответ.

Даже если один или несколько серверов недоступны.

Ответ может не содержать самых свежих данных.

P — Partition Tolerance (Устойчивость к разделению)
Система продолжает работать, даже если связь между серверами прервана.

В распределённых системах сетевые сбои неизбежны.

Главное правило. Когда происходит сетевое разделение (partition)...

Можно выбрать только одно из двух:
✔️ Согласованность (Consistency)
ИЛИ
✔️ Доступность (Availability)

Гарантировать оба одновременно нельзя.

Partition Tolerance в распределённых системах не опционален — вы обязаны считать, что это случится.

- CP-системы
Выбирают:
✔️ Согласованность
✔️ Устойчивость к разделению

Пример:
Сервер A      ✖️ Сеть ✖️      Сервер B


Если серверы не могут общаться, часть запросов отклоняется, чтобы сохранить согласованность данных.

Применение:
- Банковские системы
- Платёжные системы
- Управление запасами

Правильность важнее, чем постоянный ответ.

- AP-системы
Выбирают:
✔️ Доступность
✔️ Устойчивость к разделению

Даже если серверы теряют связь, они продолжают отвечать.
Некоторые пользователи могут временно видеть устаревшие данные.

Применение:
- Социальные сети
- Ленты новостей
- Каталоги товаров

Доступность важнее немедленной согласованности.

= Реальные примеры =

Банкинг
Неверные балансы недопустимы. Выбирают CP.

Лайки в Instagram
Видеть 1024 лайка вместо 1026 пару секунд — не проблема. Выбирают AP.

Корзина покупок
Многие системы ищут баланс.

Корзина должна оставаться доступной, а важные операции (оплата) — строго согласованными.

Главный вывод. Теорема CAP не говорит: «Выбери любые два».

Она говорит:

Когда происходит сетевое разделение, вы обязаны выбрать между Согласованностью и Доступностью.

Каждая распределённая система делает этот компромисс.

👉 Java Portal
  • ❤ 7
  • 👍 2
More from @java_iibrary
  1. Sep 22, 2026Java-разработчики: Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканч…
  2. Sep 22, 2026Прогрев от Java-бабули 🙂 👉 Java Portal
  3. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
  4. Sep 21, 2026Псс, хочешь перестать мониторить Telegram в поисках работы? 👀 Ты листаешь каналы, видишь…
  5. Sep 21, 2026💡 Java/Spring: отдавайте предпочтение constructor injection вместо @Autowired для полей.…
  6. Sep 20, 2026Если бы пришлось заново начинать свой путь в Java в 2026 году, я бы придерживался такого r…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →