flo*_*olu 10 sockets node.js socket.io kubernetes microservices
我有一个在基于微服务的架构(在 Kubernetes 上)上运行的应用程序。与应用程序外部的所有通信都通过API Gateway发生。
这只是意味着来自我前端的请求不会直接发送到服务,但它们必须通过网关。
现在我需要实现一个需要在前端和内部服务之间进行实时通信的功能。但是由于内部服务没有对外公开,我需要一种通过网关“路由”实时数据的方法。
我所有的服务都在 Node.js 上运行,这就是我想使用Socket.IO来实现实时通信的原因。
但是如何从草图中实现紫色双箭头?
所以通常前端客户端会连接到运行 Socket.IO 的服务器。但在我的情况下,这个服务器(实时功能服务器)不能从客户端访问(并且永远不应该),这意味着客户端必须连接到网关。因此网关需要实现某种机制来将所有传入消息路由到实时服务,反之亦然。
(1) 让第二个 HTTP 服务器侦听网关上的事件并将这些事件发送到实时服务器。在另一个方向,实时服务器将事件发送到网关,网关然后将它们发送到前端。我认为这种方法肯定会奏效,但是将所有内容发出两次似乎是多余的。它肯定会损害性能?
(2) 使用 Socket.IO 适配器“在节点之间传递事件”,这似乎是正确的方法,因为它用于“在进程或计算机之间传递消息”。但是由于缺乏文档/示例,我在入门时遇到了问题。我也没有使用 Redis(是否需要使用适配器?)
(3) 使用socket.io-emitter包,这似乎不是一个好的选择,因为上次提交是在 3 年前。
(4) 还有什么?
| 归档时间: |
|
| 查看次数: |
842 次 |
| 最近记录: |