开发者社区 > 云原生 > Serverless > 正文

一个websocket链接,在不断的情况下,里面的请求会被其它容器消费吗?

一个websocket链接,在不断的情况下,里面的请求会被其它容器消费吗?

提问26.png

展开
收起
芬奇福贵 2023-04-20 16:23:23 405 0
5 条回答
写回答
取消 提交回答
  • WebSocket 是一种基于 TCP 协议的全双工通信协议,在同一台计算机上的不同容器使用同一个 WebSocket 链接时理论上是可以被其它容器消费的。因为在容器化微服务架构中,每个容器都是一个相对独立的运行时环境,拥有自己的网络栈和端口号。如果这些容器共享同一个端口,那么它们都可以监听和使用 WebSocket 链接。

    2023-04-21 08:32:27
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。
    • 一个websocket链接所处理的请求是由同一个容器处理的,不会被其它容器消费。每个websocket连接会被分配到一个容器中,该容器将一直处理该连接的请求,直到连接关闭或容器实例被终止。
    • 因此,长时间持续运行的websocket应用不适合使用函数计算。建议考虑使用云服务器 ECS 或者容器服务等更适合长时间持续运行的计算场景。
    2023-04-20 23:32:57
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云函数计算中,一个WebSocket链接会绑定到一个函数实例上,而不会被其他容器消费。当您的函数处理WebSocket请求时,函数计算会为该请求创建一个WebSocket连接,并将该连接与函数实例绑定。在整个连接的生命周期内,函数计算会始终使用同一个函数实例来处理该连接上的请求,不会被其他容器消费。

    阿里云函数计算的WebSocket连接是有超时时间限制的。如果连接在一段时间内没有收到任何数据,则会被函数计算自动关闭。因此,如果您需要保持WebSocket连接持续不断地运行,需要在代码中定期发送心跳包或者数据包来保持连接活跃。

    2023-04-20 21:30:23
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    WebSocket 是一种基于 TCP 协议的双向通信协议,它是一个长连接,一旦建立连接之后,客户端和服务器之间就可以进行双向通信,而不需要重新建立连接。

    在 WebSocket 连接建立后,客户端和服务器之间可以通过发送消息进行通信。如果多个容器共享同一个 WebSocket 连接,那么这些容器都可以接收到这个连接发送的消息,并且可以对这些消息进行消费处理。但是,需要注意的是,WebSocket 连接的消息是有序的,如果多个容器同时对同一个消息进行处理,可能会导致消息处理的顺序不一致,从而影响业务逻辑的正确性。

    因此,如果多个容器需要共享同一个 WebSocket 连接,需要进行消息处理的协调和同步,以保证消息处理的正确性。可以使用分布式锁等机制来实现消息处理的协调和同步。

    2023-04-20 18:15:34
    赞同 展开评论 打赏
  • 不能保证,尽量一个容器。

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-04-20 16:25:31
    赞同 展开评论 打赏

快速交付实现商业价值。

相关电子书

更多
阿里云文件存储 NAS 在容器场景的最佳实践 立即下载
何种数据存储才能助力容器计算 立即下载
《容器网络文件系统CNFS》 立即下载