假设我在 springboot 中实现了一个 websocket。架构是微服务。我已经在 kubernetes 集群中部署了该服务,并且我有 2 个正在运行的服务实例,套接字实现使用 stomp 和 redis 作为代理。
现在在客户端和其中一个服务之间创建了第一个连接。是否所有数据流都通过客户端和连接的服务发生?其他服务也会有连接吗?如果当前服务关闭,其他服务会打开连接吗?
现在假设我将通过 kafka 主题将一些数据发送回客户端。任何一个服务都可以读取它。如果那样的话,他们中的任何一个都可以将数据发送回客户端吗?
有人能帮我理解这些场景吗?
答案 0 :(得分:1)
websocket 是一个永久连接。打开之后会通过kubernetes路由到一个固定的pod。没有其他 pod 会收到连接。 如果 pod 出现故障,连接将终止。
如果创建了新连接,例如由不同的用户创建,它可能会被路由到不同的 Pod。
传输什么数据,例如以 kafka 作为源,与此上下文无关。它可以是任何东西。