Устойчивость к сбоям: как система ведёт себя при отказе зависимостей (БД, Kafka, других сервисов).
Принципы
- Деградация вместо полного падения — при недоступности некритичной зависимости (например, кеш) сервис продолжает работать с ограниченной функциональностью; критичные операции (проверка пароля, выдача токена) требуют доступности соответствующих зависимостей.
- Retry с backoff — повторные вызовы к внешним зависимостям с экспоненциальной задержкой и ограничением числа попыток; см. Backpressure and retries.
- Circuit breaker — при длительной недоступности зависимости прекращать попытки на время, периодически проверять восстановление; снижать нагрузку на падающий сервис и ускорить ответ клиенту.
- Таймауты — все внешние вызовы (gRPC, HTTP, БД, Kafka) с явными таймаутами; не зависать бесконечно.
В платформе
- Identity, Credential, Account — при недоступности БД запросы возвращают ошибку (5xx); retry на стороне клиента (API Gateway, Auth Service) по политике.
- Kafka — producer (outbox worker) retry при сбое публикации; сообщения остаются в outbox до успешной доставки. Consumer — идемпотентная обработка, при падении переобработка после рестарта.
- API Gateway — при недоступности backend возвращает 503; клиент может повторить запрос.
- Кеш (Redis) — при недоступности кеша сервис идёт в БД; латентность растёт, но функциональность сохраняется.
Связанные страницы
- Backpressure and retries — retry и ограничение нагрузки
- SLA / SLO — целевая доступность
- Disaster Recovery — восстановление после крупных сбоев
- Backend / Error handling — обработка ошибок в коде
- Incident Management — реагирование на сбои