Параллельное выполнение большого запроса на разных серверах IIS - PullRequest
0 голосов
/ 19 мая 2018

У меня есть служба веб-API REST в IIS, которая принимает коллекцию объектов запроса.Пользователь может ввести более 100 объектов запроса.Моя служба развернута на 20 серверах IIS.

Я хочу выполнить этот запрос 100 одновременно, а затем объединить результат и отправить его обратно.Это включает в себя как операции ввода-вывода (вызов внутренних служб для каждого запроса), так и операции с привязкой к процессору (для вычисления нескольких элементов ответа).

когда мой контроллер получает запрос, мы можем разделить его и разделить запрос по всем20 серверов IIS доступны на одном или другом компьютере для ускорения обработки.Пожалуйста, предложите любой вариант

1 Ответ

0 голосов
/ 19 мая 2018

Я не могу предоставить подробности реализации, но вы должны сделать следующие вещи.

Существует множество решений, и я могу предложить одно из них.

Решение 1

  1. Ваша основная заявка получает запрос.(Запрос с 100 или более объектами).

  2. Теперь здесь у этого приложения есть информация о вашем 20 другом сайте или URL.(Эти URL-адреса также могут храниться в файле конфигурации или XML)

  3. Также вы должны решить, что каждый сервер должен обрабатывать один или несколько объектов одновременно.(Вы можете создать такую ​​конфигурацию и сохранить ее в web.config)

  4. Теперь на основе вашего запроса вы создаете httpClient для вызова RestApi и предоставления каждой информации.Убедитесь, что вы используете асинхронную модель, чтобы воспользоваться преимуществами асинхронной функции.

  5. Например, если я рассматриваю только один объект на конфигурацию сервера и сервера (хранилище URL сервера в массиве)

     int requestCnt = 0;
     foreach(var request in Requests)
     {
      HttpClient client = new HttpClient();
      client.Url = Server[request % 20];
      client.PostAsync()
     } 
    

Примечание: это всего лишь примерная вещь, поэтому вам нужно поработать над деталями реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...