考虑到 k8s,如何让两个后端 nodejs 服务器相互通信以处理不同的任务

How to have two backend nodejs servers communicate with each other to handle different tasks with k8s in mind

我有一个处理所有身份验证的快速服务器(使用令牌身份验证并使用 Redis 存储会话来控制每台设备的登录数量)和 reading/writing 到 mongoDB。

我想为我的用户添加聊天功能(使用 socket.io 和 socket.io-redis),而不是在当前后端对其进行编码,我想知道如何将它分开,或者如果那样的话甚至是个好主意。

我以为是因为我在k8s集群上部署,但我想知道如何进行这两个服务器之间的通信。

我正在使用入口 nginx 控制器,我在负载均衡器中打开到后端的流量。起初我以为我会在聊天服务器和用户之间路由来自后端的所有流量。但事实并非如此,因为聊天服务器需要直接连接到用户?那么如何保护后端与聊天服务器之间的通信以及聊天服务器与用户之间的通信?

也许我想多了,但任何见解都值得赞赏。

我最后做的是创建一个 Auth 服务器、一个主 API 服务器和一个聊天服务器。前端指向 auth.domain.com、api.domain.com、chat.domain.com.

Auth服务器生成一个JWT,在用户登录时存储在redis中。 主 API 服务器和聊天服务器检查 redis 以确保 JWT 有效,然后执行。

因为所有这些都是 运行 在 k8s 集群上并且可以有多个实例,所以我使用 Pub/Sub 所以即使用户不在同一个 websocket 服务器(聊天服务器)上,他们仍会收到。