我正在学习微服务,我想练习一下。所以,首先我尝试想象一下聊天应用程序的架构。我做到了:
但正如你所看到的,最重要的部分还没有完成。
一般来说,当SignalR收到新消息时,他会检查自己是否有目标连接,以及用户ID是否匹配。如果是,则立即向目标发送消息。否则,将消息传输到RabbitMQ,然后将消息发送到除此之外的所有SignalR服务器(至少我认为它可以这样工作,我正在学习微服务几个小时)。
但是,如果有API网关作为中间人,我如何与SignalR服务器进行通信?如果我有许多API网关(例如,一个用于网络,另一个用于移动设备),或者在API网关之后有负载均衡器,会怎么样?在这种情况下,我如何在最终用户和SignalR服务器之间拥有WebSocket?这可能吗?
我假设只有API网关暴露在互联网上。也许这个假设在使用WebSockets时是错误的?