首页 > 解决方案 > Pubsub,推送到所有 Cloud Run 容器

问题描述

我正在使用 Pubsub(push) 和 Cloud Run,我将在其中部署一个使用 Spring Boot 构建的 Java 应用程序。

我有两个案例。假设Service A由于高负载,我在 Cloud Run 中运行了 10 个容器/实例。我想要:

背景:我的 Cloud Run 服务将使用 server-sent-events 将数据直接推送到客户端/浏览器。这当然意味着容器/实例将保持状态。在某些情况下,我需要将消息推送到所有容器上的所有 sse/ws 连接(想象一个带有公共聊天室的聊天应用程序,每个人都可以看到发布的消息)。由于 Cloud Run 中的容器无法相互了解或看到(我假设),因此我认为解决此问题的正确方法是使用 pubsub。

如果有更适合这种情况的工具,请指出正确的方向。

标签: javaspring-bootgoogle-cloud-platformgoogle-cloud-pubsubgoogle-cloud-run

解决方案


您只能推送到服务端点 (URL),而不是该服务的单个实例。

每个 Cloud Run 服务只有一个容器。您可以通过每个实例的最大请求数(并发)来控制创建的实例数。

Cloud Run 实例是根据流量动态创建和销毁的。Pub/Sub 是一种基于订阅的服务。每个订阅者都会收到一份消息副本。您在某个时间点查看同一消息的 X 个副本,而在另一个时间点查看 Y 个副本。这违反了消息传递的 Pub/Sub 模型。


推荐阅读