
Temporal 无服务器 Worker 接入 Cloud Run Worker Pool

Temporal 的开源执行平台正成为分布式系统和 AI Agent 编排的底层基础设施,但把 Temporal Worker 跑在云端并不顺手。Worker 是主动轮询任务,不是被动处理请求,请求驱动的 Serverless 平台很难适配,多数人只能长期租着 Kubernetes 或 VM,自己维护指标管道、调自动扩缩容,还要忍受指标延迟导致的扩容滞后。每次部署升级都要处理版本管理,队列没活时计算资源也在烧钱。
Google Cloud 为此推出了专门的 Cloud Run worker pools,并在今天开始预览 Temporal Serverless Workers on Cloud Run:把 worker 部署为一个 worker pool,由 Temporal Cloud 根据任务队列的工作量自动调整池大小,空闲时可以缩到零,不需要自己运行集群或 Autoscaler,worker 代码不用改。
机制上,worker pool 没有公共端点,每个实例在完整生命周期内独占 CPU,正好匹配 Temporal worker 的运行方式。Temporal 通过 Cloud Run Admin API 设置实例数,权限由 IAM 控制。Temporal 不会反向连接 worker 实例,因此无需开放端口或防火墙规则。每个构建版本独立成为一个 worker pool,旧版本的池可以停在零实例,直到启动在它上面的 workflow 再次需要被调度。
官方给出了三个典型场景。一是自动扩缩的 Agentic Worker:AI Agent 的 LLM 推理、工具调用、embedding、API 调用形成突发流量,Temporal 的持久执行保证中间步骤不丢;worker 可免密钥访问 Google Cloud AI API,还能挂 GPU 做推理,挂 GPU 的 worker 同样能缩到零;每次模型或工具调用都作为 durable activity,worker 中途消失会自动重试。二是长期运行的 workflow(Entity Pattern):某些 workflow 表示真实世界实体的状态,会无限期运行,但计算需求是间歇性的,多数时间在等待外部输入;worker pool 按需提供算力,无活时自动缩下来。三是突发的批处理任务:计费运行、媒体转码这类任务到达时扩容,队列排空后缩回,最大实例数决定成本上限,超出容量的任务在队列里等待而不是被丢弃。
为什么用 worker pool 而不是 Cloud Run 服务?之前跑 Temporal worker 需要绕路:加 HTTP listener、使用实例计费或最小实例数。现在免去了公共 URL、负载均衡器和健康检查端口;实例不会因为“看起来空闲”被回收,因此只有 Temporal 自己决定何时缩容。定价上,worker pools 的每 vCPU 小时和 GB 小时比实例计费的 Cloud Run 服务便宜近 40%。
扩容机制方面,Temporal 主要依据 backlog 延迟,也就是任务进入队列到 worker 取走之间的延迟。延迟超阈值时,服务端检测到后给 worker controller 发推送通知,再向 worker pool 增加容量。新实例启动和连接需要时间,因此容量会滞后,但 Temporal 保持一定余量,让池子在任务堆积前先增长。缩容更保守:在最后一次出现“没有可用 worker”后等待默认 90 秒的稳定期,并且逐次减少;Cloud Run 的可配置 graceful shutdown 可以把关闭时间从 10 秒延长到 10 分钟,让 SIGTERM 感知的 worker 完成或检查点。实例数始终在用户设置的最小值和最大值之间。
版本升级是另一个难点。Temporal workflow 是有状态、确定性的,运行中换代码会报非确定性错误。Serverless Workers 方案强制使用 Temporal Worker Versioning,不靠条件分支打补丁,而是把每个 Worker Deployment Version 部署为独立的 worker pool,用 deploymentName 和 buildId 标识。版本池各自独立扩缩容,旧的 workflow 在旧版本上跑完,池在最后自动缩到零。版本行为可设为 PINNED(workflow 固定在启动它的版本上,适合订单处理、多步 API 这类短流程)或 AUTO_UPGRADE(workflow 自动迁移到新版本,适合订阅计费等长流程)。
上手需要三步:把 worker 容器化并部署为 Cloud Run worker pool,Build ID 放在池名中;把 Temporal API key 等凭据放进 Secret Manager;在 Temporal Cloud 里授权它管理 worker pool,并创建一个指向池项目、区域和名称的 Worker Deployment Version。目前该服务处于 preview,API 和配置在稳定版发布前可能变化。


