rest - 如何将请求平均分布在多个 REST 服务器上
问题描述
我们有一个 ASP.NET WebAPI2 REST 服务器。对它的请求是异步的,其中提交请求并返回 guid。然后调用者轮询该 guid 的状态。我们的客户将提供超过 1,000 个请求,然后继续提供和轮询。可能需要 15 分钟才能完成 1,000 个中的最后一个。
使用单个服务器可以正常工作。我们在应用程序中创建一个任务的每个请求,然后 IIS 在其线程池中处理它们。
但是负载均衡是个问题。向两台服务器分别处理 500 个请求并不一定相等。一次可以在 2 分钟内完成,另一次需要 13 分钟。询问每个人有多少待处理的作业将不起作用,因为作业可能不到 1 秒或超过 10 分钟。
从逻辑上讲,我唯一能想到的就是请求的中间存储。然后,当服务器有可用线程时,它会抓取下一个请求,对其进行处理,然后将其保存。
这是这里最好的方法吗?
如果是这样,当它的池中有可用线程时,IIS 是否有办法向我的应用程序发出信号?
解决方案
推荐阅读
- python - 求幂运算的模数初学者问题
- python - 输入未静音/正确指向函数中的新分配
- scope - 跨多个模块访问单例
- php - SQL 语法错误 Maria DB 服务器 Mysqli_query
- sql - sql queries : IN vs equal
- android - 在 Flutter 中使用新版本更新(本机)android 应用程序,同时保留数据库
- python - HeaderParseError in django email form
- erlang - Erlang installation giving erlang-mode is broken error
- python - 将 Pandas 系列对象的所有格式不一致的字符串元素强制转换为 datetime.time 类型
- java - 从 txt 文件中检索数据并使用 java 将数据替换为新的 txt 文件