TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2213 1.65K
9 основных паттернов для создания отказоустойчивых приложений
(продолжение предыдущего поста)

### 1. Предохранитель (Circuit Breaker)

* Работает как электрический предохранитель.
* Когда сервис сталкивается с повторяющимися сбоями, предохранитель срабатывает и прекращает отправку запросов к этому сервису на определённый период.
* Это позволяет проблемному сервису восстановиться, не подвергаясь дополнительной нагрузке.

Основные состояния предохранителя:
* Закрыто: запросы пропускаются.
* Открыто: запросы немедленно отклоняются с ошибкой.

Эффективен для защиты от каскадных сбоев и изоляции проблемных сервисов.

### 2. Повтор запроса (Retry)

* При сбое запроса система автоматически повторяет его определённое количество раз перед отказом.
* Помогает преодолеть временные ошибки, такие как сетевые сбои или временная недоступность.
* Повышает доступность системы и маскирует временные ошибки.
* Важно учитывать штормы повторных запросов (когда чрезмерные повторы перегружают систему) и использовать экспоненциальное отступление (увеличение времени между повторами).

### 3. Таймаут (Timeout)

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

### 4. Переборка (Bulkhead)

* Паттерн переборка изолирует различные части приложения в отдельные пулы или отсеки.
* Такая изоляция ограничивает влияние сбоев или перегрузки в одном отсеке, предотвращая их распространение на всю систему.

### 5. Ограничение скорости (Rate Limiting)

* Контролирует частоту входящих запросов для защиты системы от перегрузки.
* Защищает от атак типа «отказ в обслуживании», обеспечивает справедливое использование и помогает поддерживать стабильность системы.

### 6. Запасной вариант (Fallback)

* Предоставляет альтернативный (часто менее оптимальный) ответ или действие при сбое основного.
* Повышает доступность системы и улучшает пользовательский опыт, обеспечивая определённый уровень сервиса даже при недоступности основной функции.

### 7. Хеджирование (Hedging)

* Отправляет дублирующие запросы к нескольким идентичным сервисам и использует самый быстрый ответ.
* Снижает влияние медленных ответов и сбоев, улучшая отзывчивость системы.

### 8. Сброс нагрузки (Load Shedding)

* Отбрасывает некритичные запросы при перегрузке системы для защиты её основной функциональности.
* Помогает поддерживать стабильность и доступность системы при пиковых нагрузках.

### 9. Обратное давление (Backpressure)

* Имеет некоторое сходство с другими паттернами отказоустойчивости.

Основной механизм обратного давления — это петля обратной связи между отправителем (производителем данных) и получателем (потребителем данных).

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

Существует несколько стратегий обратного давления:
* Реактивный запрос — потребитель явно запрашивает данные у производителя, получая их в своём темпе.
* Ограничение скорости — производитель ограничивает скорость вывода данных на основе обратной связи от потребителя.
* Буферизация — используется буфер для временного хранения данных, когда потребитель работает медленно.
Telegram METANIT.COM 9 основных паттернов для создания отказоустойчивых приложений (продолжение в следующем посте)
  • 👍 11
  • ❤ 5
  • 🔥 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
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 →