使用服务器端事件进行扩展

Scaling with Server Side Events

提问人:mandark 提问时间:10/19/2023 更新时间:10/19/2023 访问量:17

问:

考虑一下:

  • 许多客户端连接到 http 服务器
  • 服务器是负载均衡器后面的一组节点(即节点 A、节点 B 等)
  • 客户端使用服务器端事件(例如 )订阅事件流并连接到节点 AGET /event-stream
  • 同一个客户端调度一个作业(例如),这是一个繁重的进程,需要异步处理。此请求恰好随机登陆节点 BPOST /prepare-zip
  • 节点 B 完成后,我们想通知客户端 - 但只有节点 A 可以这样做,因为它正在维护与客户端的连接。

我们是怎么做到的?

  • 我们是否从节点 B 广播到所有其他节点,希望相关节点能够接收它?如果我们使用队列进行广播,那么所有节点都将轮询它(包括节点 B),并且大多数节点将拒绝消息,因为它仅适用于节点 A。此外,我们似乎正在混合职责,即提供 http 请求和处理队列中的事件。
  • 我们是否跟踪共享存储/数据库中的活动连接,例如,以便我们可以通知相关服务器?

似乎应该有一个我错过的优雅解决方案?

HTTP 推送通知 服务器端 扩展

评论


答: 暂无答案