在集群部署中使用 websocket 服务

时间:2021-05-11 14:15:53

标签: spring-boot kubernetes websocket redis microservices

假设我在 springboot 中实现了一个 websocket。架构是微服务。我已经在 kubernetes 集群中部署了该服务,并且我有 2 个正在运行的服务实例,套接字实现使用 stomp 和 redis 作为代理。

  1. 现在在客户端和其中一个服务之间创建了第一个连接。是否所有数据流都通过客户端和连接的服务发生?其他服务也会有连接吗?如果当前服务关闭,其他服务会打开连接吗?

  2. 现在假设我将通过 kafka 主题将一些数据发送回客户端。任何一个服务都可以读取它。如果那样的话,他们中的任何一个都可以将数据发送回客户端吗?

有人能帮我理解这些场景吗?

1 个答案:

答案 0 :(得分:1)

websocket 是一个永久连接。打开之后会通过kubernetes路由到一个固定的pod。没有其他 pod 会收到连接。 如果 pod 出现故障,连接将终止。

如果创建了新连接,例如由不同的用户创建,它可能会被路由到不同的 Pod。

传输什么数据,例如以 kafka 作为源,与此上下文无关。它可以是任何东西。