扩展一个长 运行 的 Web 服务
Scaling a long running web service
我正在考虑创建一个执行较长 运行 过程的 Web 服务。将它们设计为与负载均衡器一起使用的最佳方法是什么?除了编写自定义队列,我想不出任何方法。
这正是你应该做的。您通常希望 Web 服务调用快速 request/response。因此,调用 Web 服务,让 Web 服务对工作进行排队,然后让工作进程从队列中提取消息并进行处理。
这是要走的路,排队长 运行 进程允许您的系统扩展,允许您在进程失败时添加恢复逻辑,允许您通过添加额外的工作人员来处理快速扩展队列,最重要的是不会占用等待响应的客户端。
REDIS (http://redis.io/) 在过去几年一直是我的选择,如果你使用 Azure 或 AWS,他们也有消息服务。
您还可以使用 websockets 在进程完成时通知客户端,以保持循环中的 UI 状态。
我正在考虑创建一个执行较长 运行 过程的 Web 服务。将它们设计为与负载均衡器一起使用的最佳方法是什么?除了编写自定义队列,我想不出任何方法。
这正是你应该做的。您通常希望 Web 服务调用快速 request/response。因此,调用 Web 服务,让 Web 服务对工作进行排队,然后让工作进程从队列中提取消息并进行处理。
这是要走的路,排队长 运行 进程允许您的系统扩展,允许您在进程失败时添加恢复逻辑,允许您通过添加额外的工作人员来处理快速扩展队列,最重要的是不会占用等待响应的客户端。
REDIS (http://redis.io/) 在过去几年一直是我的选择,如果你使用 Azure 或 AWS,他们也有消息服务。
您还可以使用 websockets 在进程完成时通知客户端,以保持循环中的 UI 状态。