3

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2021-11-10T01:31:08.440 回答