Я хочу реализовать шаблон Retry в PHP (Guzzle), чтобы определить, нужно ли мне повторно отправлять запрос в случае сбоя или нет. И в случае необходимости я должен использовать некоторую задержку перед повторной отправкой или нет. ПРИМЕЧАНИЕ: это внутренняя связь служб, и каждая служба находится в группе масштабирования и находится за балансировщиком нагрузки, поэтому мы предполагаем, что целевой URL-адрес является существующим URL-адресом, но по какой-то причине может быть недоступен, также все серверы NGINX
Есть ли рекомендации по выполнению повторных попыток или нет, с задержкой или нет ??
Насколько я знаю, статус 503
означает, что сервер перегружен, поэтому, вероятно, в такая небольшая задержка может помочь дождаться запуска нового экземпляра и помочь распределить нагрузку ???
Что делать в случае ошибки 502/504
, также повторите попытку с некоторой задержкой ???
Что делать в случае ошибки 500
?? В моем понимании 500
должно быть выброшено, когда что-то не так с сервером или логи c в целом, и нам не нужно выполнять повторную попытку ???
Как насчет 400
, то же действие, что и если мы получим 500
??
Как насчет 404
?? Может быть два типа 404
, один - если конечная точка действительно не существует (я не думаю, что это возможно в случае связи между внутренними службами), а другой - запрашиваемый ресурс не найден (например, пользователь не найден по учетным данным). ). Я думаю, что в случае 404
нам не нужно выполнять повторную попытку
422
Я использую в случае какой-либо ошибки домена или ошибки проверки, но, может быть, сервер может вернуть его в другом случае? Если это только вызвано мной, я могу предположить, что повторная попытка не требуется.
А как насчет других кодов состояния, также есть NGINX специфицированные c коды ???
Я знаю, что, вероятно, мне нужно создать определенную c стратегию повторения для каждого случая URI, но я считаю, что есть некоторые общие / повторно используемые правила.