REST сервисом. У каждого есть внутри ограничение конкуретности запросов.
Например каждый может делать одновременно 5 запросов (они разные по длительности).
Если он "занят" то он отвечает http code 429.
Я попробовал прикрыть это обычным round robin load balancer - работает плохо. Постоянно шлёт на незанятые (понятно что ему инфы мало).
Как бы это решить красивее?
Мне в голову только приходит дополнительно поставить какой то умный proxy (haproxy?)
Который бы умел делать это умнее. (я могу ещё ручку впилить которая скажет свободен или нет со стороны pod)
может асинхронности добавите
Ну я могу на клиента, но это же не изменит того что он будет получать 429 и одновременно с этим у меня будут недозагруженные инстансы которые могли бы обработать. Мне так не особенно хочется.
так вы можете сделать сервис асинхронным и не отдавать 429, или повесьте частый readinessProbe, но гарантий тоже не будет, дальше сервисмешы и энвой
умный энвой и пускай ему в реальном времени бекендыы сами что надо сообщают
nginx proxy_next_upstream error timeout http_429;
Обсуждают сегодня