advanced
Fault tolerance
Continue operating through partial failures using timeouts, retries, circuit breakers, bulkheads, and fallback modes. Связывайте target с user impact и verification.
Отказоустойчивость сохраняет полезность системы при сбоях компонентов. Паттерны: timeout, ограниченные retry с jitter, circuit breaker, bulkhead, идемпотентные обработчики и fallback-ответы. Проектируйте под частичный отказ — сети и диски рутинно ломаются на масштабе.
Retry должны быть безопасными и ограниченными. Breaker прекращает долбить больную зависимость. Bulkhead выделяет пулы потоков или лимиты соединений.
На интервью: circuit breaker на внешний API в схеме, политика retry и безопасный fallback UX.
Типовые ошибки: бесконечные retry на 500; общий пул потоков исчерпан одной медленной зависимостью; fallback, тихо нарушающий бизнес-правила.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Timeout на все внешние вызовы.
- Retry только идемпотентных операций с лимитом.
- Circuit breaker и bulkhead.
- Видимое пользователю поведение fallback.