У нас есть ASP. NET REST-сервер WebAPI2. Запросы к нему asyn c, где запрос отправляется и возвращает guid. А затем вызывающий абонент опрашивает статус этого гида. У нас есть клиенты, которые отправят более 1000 запросов, а затем продолжат удовлетворять запросы. И может пройти 15 минут, пока последний из 1000 не будет завершен.
С одним сервером это работает нормально. Каждый запрос мы создаем Задачу в нашем приложении, а затем IIS обрабатывает их в своем пуле потоков.
Но балансировка нагрузки является проблемой. Передача 500 запросов каждому на два сервера не обязательно одинакова. Один может завершиться за 2 минуты, а другой займет 13 минут. Каждый из них спрашивает, сколько ожидающих заданий не будет работать, потому что задание может быть менее 1 секунды или более 10 минут.
Логически единственное, о чем я могу думать, - это промежуточное хранилище запросов. Затем, когда у сервера есть доступный поток, он захватывает следующий запрос, обрабатывает его и затем сохраняет его.
Это лучший подход здесь?
И если да, имеет ли IIS способ сигнализации моего приложения, когда оно имеет доступный поток из своего пула?