首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云运行服务器流

云运行服务器流
EN

Stack Overflow用户
提问于 2021-02-14 21:27:11
回答 1查看 590关注 0票数 0

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。

这引起了一些问题:

  • 它如何与自动缩放工作?
  • 比方说,我们构建了一个聊天应用程序,并且具有跨多个实例的ws连接,并且需要将消息推送给所有实例。我们会怎么做?
  • 实例现在可以保持状态( web套接字连接)吗?这会带来什么后果?

我想问的是,我们如何使用Google Cloud中的云运行和其他托管工具构建一个可扩展的聊天应用程序,其中包括私有消息和公共聊天室等功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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分钟后被删除,并且您应该有一个处理自动重连接的逻辑。明确提到了这个限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66200307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档