You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Run使用keep alive header时多请求是否固定路由至同一实例

Cloud Run分片上传方案可行性解答

首先解答你关于HTTP/2头部的疑问:Chrome开发者工具显示HTTP/2头部代表当前请求实际使用HTTP/2协议传输,和服务端是否兼容HTTP/1无关,你提到的站点实际同时支持HTTP/1和HTTP/2,浏览器默认优先选择更高版本的协议,所以才会显示HTTP/2请求头。

接下来是你关心的核心问题的结论:

  • 默认情况下,Cloud Run没有开启会话粘滞,负载均衡不会保证同一客户端的多个请求路由到同一个实例。
  • 不过Cloud Run的负载均衡是基于连接分发请求的:如果你所有分片请求都复用同一个HTTP/2连接,那这些同连接的请求一定会被路由到同一个Cloud Run实例,只要总上传耗时不超过你配置的Cloud Run超时时间上限,服务端的ByteReader逻辑可以正常运行,这个方案在连接不中断的前提下是可行的。
  • 需要注意的是,Chrome的HTTP/2连接复用不是完全可靠的:网络波动、Chrome主动回收闲置连接、中间代理断开连接都会导致新建连接,新连接的请求会被路由到其他实例,导致你的服务端逻辑失败。

如果需要更稳定的上传方案,建议做以下改造:

  • 服务端改成无状态分片上传逻辑:每个分片请求携带唯一上传会话ID、分片序号、总分片数,分片数据暂时存入云存储而非实例内存,所有实例均可读取同一个会话的分片数据,全部分片上传完成后再拼接成完整文件,该方案完全适配Cloud Run的无状态架构,不受实例路由规则影响,稳定性更高。
  • 如果必须保留单实例内存处理的逻辑,你可以手动开启Cloud Run的会话粘滞功能,开启后同一客户端的请求会尽量路由到同一个实例,仅当目标实例过载或被销毁时才会分发到其他实例,可大幅降低跨实例请求的概率。

内容的提问来源于stack exchange,提问作者Dean Hiller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:24:03