Как равномерно распределить запросы по нескольким серверам REST? - PullRequest
0 голосов
/ 21 апреля 2020

У нас есть ASP. NET REST-сервер WebAPI2. Запросы к нему asyn c, где запрос отправляется и возвращает guid. А затем вызывающий абонент опрашивает статус этого гида. У нас есть клиенты, которые отправят более 1000 запросов, а затем продолжат удовлетворять запросы. И может пройти 15 минут, пока последний из 1000 не будет завершен.

С одним сервером это работает нормально. Каждый запрос мы создаем Задачу в нашем приложении, а затем IIS обрабатывает их в своем пуле потоков.

Но балансировка нагрузки является проблемой. Передача 500 запросов каждому на два сервера не обязательно одинакова. Один может завершиться за 2 минуты, а другой займет 13 минут. Каждый из них спрашивает, сколько ожидающих заданий не будет работать, потому что задание может быть менее 1 секунды или более 10 минут.

Логически единственное, о чем я могу думать, - это промежуточное хранилище запросов. Затем, когда у сервера есть доступный поток, он захватывает следующий запрос, обрабатывает его и затем сохраняет его.

Это лучший подход здесь?

И если да, имеет ли IIS способ сигнализации моего приложения, когда оно имеет доступный поток из своего пула?

...