Вы можете попытаться определить свои службы как global
, чтобы получить только одну работающую службу на узел.
Затем мы можем использовать traefik
(или аналогичный балансировщик нагрузки) для настройки логики балансировки нагрузки:
- настроить проверку работоспособности для вашего сервиса, чтобы отслеживать 503 ошибки
- также вы можете рассмотреть возможность использования весов для более правильной балансировки нагрузки вашегоjobs
Существуют более «сложные» решения, такие как HAproxy , kong proxy или консул .
Вы также можете пересмотреть свою архитектуру и преобразовать ее в очередь вместо запроса / ответа. Таким образом, запрос вернет идентификатор задания, и вы сможете получить результаты позже после того, как задание будет обработано.
Другой вариант - реализовать логику прокси на языке, который вам удобен, для обработки 503 ошибок в запросах проксина другие узлы.
Я думаю, что логика очереди звучит более подходящей для случая, который вы описали (хотя и едва).