【问题标题】:How do Cloud Run instances perceive multiple requests from HTTP2 connections?Cloud Run 实例如何感知来自 HTTP2 连接的多个请求?
【发布时间】:2021-01-20 04:36:19
【问题描述】:

HTTP2 具有此多路复用 功能。

从这个[答案](简单地说,多路复用允许您的浏览器在同一连接上一次触发多个请求并以任何顺序接收请求。)我们得到:

简单地说,多路复用允许您的浏览器一次在同一连接上触发多个请求,并以任意顺序接收返回的请求。

假设我将我的应用拆分为 50 个小捆绑文件,以利用多路通信。

我的服务器是一个托管在 Cloud Run 实例中的 express 应用程序。

这是Cloud Run says about concurrency

默认情况下,Cloud Run 容器实例可以同时接收多个请求(最多 250 个)

那么,如果 5 位用户同时点击我的应用,是否意味着我的实例会在短时间内被最大化?

因为每个浏览器(来自 5 个用户)将发出 50 个请求(针对 50 个小捆绑文件),总共有 250 个。

在同一连接上发生多路复用流量这一事实是否会改变任何事情?它是如何工作的?

这是否意味着我的云运行将感知 5 个连接,而我的 express 服务器将感知 250 个请求?我想我对这两个角度(云运行实例和快速服务器)中的request 表达式感到困惑。

【问题讨论】:

  • 在 http2 中只有一个请求(一个 TCP 连接),所有文件都将通过该请求获取。可以同时下载多少个文件(使用相同的连接)是有限制的,但通常是 100 个左右。
  • 谢谢。所以我的实例会将其视为 5 个连接?我的快递服务器会感知 250 个获取请求吗?是这个吗?
  • 我想是的。如果流量是加密的,云服务器只能查看和计算 TCP 连接,而不是每个连接中发生的事情。使用 http1,每个文件都必须创建一个单独的连接才能同时下载。
  • @marzelin 说得通!我想你是对的。这一切都通过 SSL。所以只有在到达express 服务器后才会解密?
  • SSL 很久以前就被 TLS 取代了,尽管人们仍然在谈论 SSL 证书,但它的正确名称是 TLS。谈到云,它取决于配置。您可以将加密委托给云提供商 - 您的服务器可以获得解密的流量,CP 的反向代理将负责保护它,或者您可以自己完成所有操作。

标签: express http http2 google-cloud-run multiplexing


【解决方案1】:

“请求”是:

  • 服务器和客户端(这里是浏览器)之间建立连接
  • 数据传输
  • 连接关闭。

借助 HTTP2 和 websocket 的流式传输能力,连接可能需要几分钟(最多 1 小时),您可以根据需要通过通道发送数据。 1 个连接 = 1 个请求,5 个连接 = 5 个请求。

但请记住,保持此连接打开并在其中处理数据会消耗您后端的资源,并且您不能有几十个主动发送/接收数据的连接,您的实例会饱和。

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2021-06-24
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多