🔌 Что значит, когда мы говорим, что распределенная система «работает»?
Каждый сервер в кластере может рапортовать, что он абсолютно здоров, в то время как пользователи видят сплошные ошибки. Вся система может технически работать, но застрять в состоянии, из которого не способна выйти самостоятельно. Или она может тихо отдавать неверные данные, пока все дашборды светятся зеленым.
Это классические паттерны сбоев, которые повторяются в распределенных системах десятилетиями.
➡️ Разберем 6 главных сценариев отказов:
1. Сетевое разделение (Network Partition)
- Кластер разделяется на изолированные половины (например, Half A и Half B). Каждая сторона остается внутренне согласованной, но понятия не имеет, что другая всё еще существует.
2. Сплит-брейн (Split-Brain)
- Опасное последствие сетевого разделения. Обе половины кластера выбирают собственного лидера и начинают принимать конфликтующие записи. Например, Лидер А фиксирует баланс пользователя в $100, а Лидер Б — в $50. Когда разделение сети исчезает, эти две валидные истории невозможно чисто слить воедино.
3. Частичные сбои (Partial Failures)
- Клиент отправляет запрос, но ответа нет. Для клиента возникают 4 абсолютно одинаковых внешне исхода:
- Запрос потерялся по пути к серверу.
- Сервер упал до того, как успел обработать данные.
- Успешно обработано, но потерялся ответный пакет.
- Сервер всё еще медленно обрабатывает запрос и скоро ответит.
4. Серые сбои (Gray Failures)
- Снаружи узел выглядит здоровым, а внутри не работает. Система мониторинга показывает, что все проверки пройдены ("I'm fine!").
- Однако из-за медленного диска, пауз сборщика мусора (GC) или полумертвой сетевой карты реальные запросы пользователей отваливаются по таймауту.
5. Петля усиления (The Amplification Loop)
- Система пытается спастись, но делает только хуже. Триггер (например, всплеск трафика или деплой) переводит систему в деградировавшее состояние с задержками и ошибками.
- В ответ система включает защиту: ретраи, фейловеры, автоскейлинг. Это многократно усиливает нагрузку и замыкает цикл сбоя, убивая остатки серверов.
6. Каскадные сбои (Cascading Failures)
- Один узел падает (DOWN), и его работа перераспределяется на здоровые серверы. Это перегружает Узел 2 (до 130% мощности). Он тоже падает, перекидывая двойной объем на Узел 3 (до 95%), и так далее по цепочке, пока не ляжет весь кластер. Попытка просто добавить новые серверы во время такого каскада лишь дает сбою больше мест для распространения.
Управлять такими хрупкими архитектурами вручную становится всё сложнее.
👉 Учим вас проектировать, настраивать и внедрять ИИ-агентов под любые реальные рабочие процессы.
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Proglib Academy
#буст
Post #3897
129
