跨不同IIS服务器并发执行大型请求

时间:2018-05-19 02:17:19

标签: c# asp.net multithreading iis

我在IIS中有REST Web API服务,它接收一组请求对象。用户可以输入超过100个请求对象。我的服务部署在20台IIS服务器上。

我想同时运行这个100请求,然后汇总结果并将其发回。这涉及I / O操作(调用每个请求的后端服务)和CPU绑定操作(计算少量响应元素)。

当我的控制器收到请求时,我们可以拆分并在相同或不同机器中可用的所有20个IIS服务器之间共享请求,以加快处理速度。请建议任何选项

1 个答案:

答案 0 :(得分:1)

我无法提供详细的实施,但您必须做以下事情。

有很多解决方案,我可以建议其中一个。

解决方案1 ​​

  1. 您的一个主要应用程序会收到请求。 (请求包含100个或更多对象)。

  2. 现在,此应用程序包含有关您的其他20个网站或网址的信息。 (此网址也可以存储在配置或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()
     } 
    
  6. 注意:这只是示例,因此您必须处理详细实现部分。