Нужны общая очередь ожидания и глобальный ограничитель, учитывающий все инстансы. Worker получает разрешение перед внешним запросом и освобождает после завершения.
Как решить проблему ограничения параллельных запросов в распределённой системе с несколькими инстансами, если пользователь должен ждать, а не получать ошибку?
Нужны общая очередь ожидания и глобальный ограничитель, учитывающий все инстансы. Worker получает разрешение перед внешним запросом и освобождает после завершения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Нужны общая очередь ожидания и глобальный ограничитель, учитывающий все инстансы. Worker получает разрешение перед внешним запросом и освобождает после завершения.
Для долгого ожидания удобен job ID и получение статуса вместо удержания HTTP-соединения. Ограничьте размер очереди, задайте deadline и отмену. Lease защищает от потерянных разрешений, но его истечение не означает, что старый запрос уже прекратился: нужны heartbeat и осторожное восстановление, чтобы не превысить реальную конкурентность.