[英]Server streaming with Cloud Run
2020 年 10 月 7 日和 2021 年 1 月 21 日,Google 分别为 Cloud Run 推出了单向服务器流式传输和双向 web sockets。 以下是博客文章:
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 等协议在 Cloud Run 之上构建聊天应用,或使用 gRPC 设计流式 API。
这提出了一些问题:
我想问什么; 我们如何使用 Cloud Run 和 Google Cloud 中提供的其他托管工具以及私人消息和公共聊天室等功能构建可扩展的聊天应用程序?
它如何与自动缩放一起使用?
每个 WebSocket 连接将消耗每个容器 250 个可用连接容量中的 1 个连接。 (250 可能会在未来发生变化,因为它曾经是 80,但最近增加到 250。)此限制信息可在 Google Cloud Run Limits 文档中找到。 当容器的 250 个连接都被占用时,会自动启动另一个容器实例。
假设我们构建了一个聊天应用程序,并且我们的 ws 连接分布在多个实例中,并且需要向所有实例推送消息。 我们会怎么做?
您必须使用某种形式的中央数据存储或 pubsub 来解决该问题。 例如,Google 提供了 Google Cloud PubSub,或者您可以设置一个 Redis 实例并使用 Redis 的 PubSub 功能。 有很多方法可以解决这个问题。
实例现在可以保留 state(web 套接字连接)吗? 这有什么后果?
将 state 保存在容器中始终是安全的,但您只需要确保在没有活动连接时可以随时终止容器。 此外,根据文档,Google Cloud Run 将在请求超时配置后终止所有 HTTP 请求(包括 WebSockets),默认值为 5 分钟,可以增加到 15 分钟。 因此,您的 WebSocket 连接可能会在 15 分钟后断开,您应该有一个处理自动重新连接的逻辑。 Google Cloud Run 文档明确谈到了这个限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.