2020年10月7日和2021年1月7日,谷歌分别推出了用于云运行的单向服务器流和双向网络套接字。以下是博客文章:
https://cloud.google.com/blog/products/serverless/cloud-run-now-supports-http-grpc-server-streaming https://cloud.google.com/blog/products/serverless/cloud-run-gets-websockets-http-2-and-grpc-bidirectional-streams
从第二个环节:
这意味着您现在可以在云运行的基础上构建一个聊天应用程序,使用WebSockets之类的协议,或者使用gRPC设计流API。
这引起了一些问题:
我想问的是,我们如何使用Google Cloud中的云运行和其他托管工具构建一个可扩展的聊天应用程序,其中包括私有消息和公共聊天室等功能。
发布于 2021-02-22 09:08:07
它是如何与自动缩放的?
每个WebSocket连接将消耗每个容器250个可用连接容量中的1个连接。(250可能会在未来发生变化,因为它以前是80,但最近增加到了250。)此限制信息可在Google运行限制文档中获得。当容器的所有250个连接都被占用时,另一个容器实例将自动启动。
比方说,我们构建了一个聊天应用程序,并且具有跨多个实例的ws连接,并且需要将消息推送给所有实例。我们会怎么做?
你必须使用某种形式的中央数据存储或公共数据库来解决这个问题。例如,谷歌提供Google,或者您可以设置一个Redis实例并使用Redis的PubSub功能。解决这个问题有很多种方法。
实例现在可以保持状态( web套接字连接)吗?这会带来什么后果?
将状态保存在容器中始终是安全的,但您只需要确保容器在没有活动连接的任何时候都可以终止。此外,根据文档,Google运行将在请求超时配置之后终止所有HTTP请求(包括WebSockets),该配置的默认值为5分钟,可以增加到15分钟。因此,您的WebSocket连接可能会在15分钟后被删除,并且您应该有一个处理自动重连接的逻辑。明确提到了这个限制。
https://stackoverflow.com/questions/66200307
复制相似问题