Skip to content
2 / 15

Когда повтор запроса безопасен и как настроить повторы, чтобы не добить сервис?

Повторять можно только идемпотентную операцию: чтение, запись по ключу идемпотентности, замену целиком. И только те ошибки, которые означают «попробуй позже»: таймаут, обрыв соединения, 502, 503, 504, 429. Ошибки валидации, права и конфликты повторять бессмысленно — ответ не изменится. Пауза между попытками растёт экспоненциально и обязательно с джиттером, иначе все клиенты вернутся одной толпой в один и тот же момент. Число попыток ограничено, а суммарное время всех попыток укладывается в бюджет запроса. Отдельно нужен бюджет повторов на сервис в целом: повторы не должны превышать несколько процентов трафика, иначе при частичном отказе они умножат нагрузку на уже больную зависимость и превратят её в полную.

Когда повтор запроса безопасен и как настроить повторы, чтобы не добить сервис? | JScriptiser