首页 > 解决方案 > 如何将请求平均分布在多个 REST 服务器上

问题描述

我们有一个 ASP.NET WebAPI2 REST 服务器。对它的请求是异步的,其中提交请求并返回 guid。然后调用者轮询该 guid 的状态。我们的客户将提供超过 1,000 个请求,然后继续提供和轮询。可能需要 15 分钟才能完成 1,000 个中的最后一个。

使用单个服务器可以正常工作。我们在应用程序中创建一个任务的每个请求,然后 IIS 在其线程池中处理它们。

但是负载均衡是个问题。向两台服务器分别处理 500 个请求并不一定相等。一次可以在 2 分钟内完成,另一次需要 13 分钟。询问每个人有多少待处理的作业将不起作用,因为作业可能不到 1 秒或超过 10 分钟。

从逻辑上讲,我唯一能想到的就是请求的中间存储。然后,当服务器有可用线程时,它会抓取下一个请求,对其进行处理,然后将其保存。

这是这里最好的方法吗?

如果是这样,当它的池中有可用线程时,IIS 是否有办法向我的应用程序发出信号?

标签: restiisasp.net-web-apiasp.net-web-api2

解决方案


推荐阅读