【发布时间】:2020-08-10 15:55:53
【问题描述】:
我已经通过 Azure 应用程序网关公开了一个启用 websocket 的服务端点,并且该服务托管在 azure 服务结构上。客户端启动与我的端点的 websocket 连接并能够交换数据。在某些消息流期间,我启用了 Web Socket 的服务使用 azure 服务总线调用托管在服务结构上的其他服务。这些以完全异步的方式处理。一旦其他服务完成处理,它们就会向我的 WebSocket 服务读回的服务总线发布一条消息。 我遇到的问题是将消息路由回正确的服务结构节点,以便可以将其推送回 WebSocket 连接另一端的客户端
在下图中,您可以想象每个节点包含多个服务,包括启用 Web 套接字的服务。一旦 Websocket 服务向服务总线发送消息,下游服务就会开始处理,最后它们会将消息发送回服务总线,Websocket 服务会读回该消息。在这里,一个随机节点将接收消息,它可能没有相关的 websocket 连接来推回处理过的数据 Sample Design
我查看了 redis pubsub 模型,看起来我必须维护节点上处理的最后一条消息。这也意味着,集群上的每个节点都需要读取消息并在它们没有与客户端的 websocket 连接时丢弃它。我正在寻找针对此类问题的任何建议设计模型
【问题讨论】:
-
您确定了解决方案吗?
-
抱歉,回复晚了。由于其他一些承诺,我已将这项工作搁置。我倾向于使用可靠的服务分区将呼叫路由到同一个节点。我将在需要继续到同一分区的调用中使用公共密钥。
-
如果它对任何人有帮助,我最终使用 azure service bus 会话来实现它以获取会话的独占锁定
标签: websocket architecture azure-service-fabric