C# 跨不同IIS服务器并发执行大型请求
我在IIS中有RESTWebAPI服务,它接受一组请求对象。用户可以输入100多个请求对象。我的服务部署在20台IIS服务器上 我想并发运行这个100请求,然后聚合结果并将其发送回。这涉及到为每个请求调用后端服务的I/O操作和计算少量响应元素的CPU绑定操作C# 跨不同IIS服务器并发执行大型请求,c#,asp.net,multithreading,iis,C#,Asp.net,Multithreading,Iis,我在IIS中有RESTWebAPI服务,它接受一组请求对象。用户可以输入100多个请求对象。我的服务部署在20台IIS服务器上 我想并发运行这个100请求,然后聚合结果并将其发送回。这涉及到为每个请求调用后端服务的I/O操作和计算少量响应元素的CPU绑定操作 当我的控制器收到请求时,我们可以在同一台或不同的机器上的所有20台IIS服务器上拆分和共享请求,以加快处理速度。请建议任何选项我无法提供详细的实现,但您必须执行以下操作 有很多解决方案,我可以建议其中之一 解决方案1 您的一个主应用程序接收
当我的控制器收到请求时,我们可以在同一台或不同的机器上的所有20台IIS服务器上拆分和共享请求,以加快处理速度。请建议任何选项我无法提供详细的实现,但您必须执行以下操作 有很多解决方案,我可以建议其中之一 解决方案1 您的一个主应用程序接收请求。请求包含100个或更多对象 现在,这个应用程序有关于您的20个其他站点或url的信息。此URL还可以存储在配置文件或XML文件中 您还必须决定每个服务器应该同时处理一个或多个对象。您可以创建这样的配置并将其存储在web.config中 现在根据您的请求创建httpClient来调用RestApi并提供每个数据。确保使用异步模型,以便可以利用异步特性
例如,如果只考虑每个服务器中的一个对象和数组
中的服务器配置服务器URL存储 int requestCnt = 0;
foreach(var request in Requests)
{
HttpClient client = new HttpClient();
client.Url = Server[request % 20];
client.PostAsync()
}
注意:这只是一个示例,所以您必须处理详细的实现部分。您的100个左右的请求对象是否相互依赖,或者是否有任何依赖关系,比如某些请求必须在其他请求之前执行,或者所有请求都是相同的,这样您就不必担心订单。不,它是独立的,我们不必担心订单问题