Привет. В этой статье я расскажу какие бывают паттерны отказоустойчивости. Всего их 6, но я расскажу про 4 вида: Retry, Deadline, Rate Limiter, Circuit Breaker. Начнем по порядку.
Retry
Сначала скажу, что сеть максимальна не стабильна и полагаться на успешные операции не вариант. При выполнении какого либо запроса, может быть сетевая ошибка, обрыв, дроп пакета, недоступность ресурса. Чаще всего такие проблемы можно решить обычным повтором запроса.
Но повторять нельзя вслепую. Если операция не идемпотентна, например создание заказа, повторный запрос может создать дубликат вместо одного заказа. Поэтому retry применяется только к тем методам, которые явно помечены как безопасные для повтора.