java - Pubsub,推送到所有 Cloud Run 容器
问题描述
我正在使用 Pubsub(push) 和 Cloud Run,我将在其中部署一个使用 Spring Boot 构建的 Java 应用程序。
我有两个案例。假设Service A
由于高负载,我在 Cloud Run 中运行了 10 个容器/实例。我想要:
- 将消息(来自 Cloud Function)推送到所有(广播)容器
Service A
- 将消息(来自 Cloud Function)推送到单个任意容器
Service A
背景:我的 Cloud Run 服务将使用 server-sent-events 将数据直接推送到客户端/浏览器。这当然意味着容器/实例将保持状态。在某些情况下,我需要将消息推送到所有容器上的所有 sse/ws 连接(想象一个带有公共聊天室的聊天应用程序,每个人都可以看到发布的消息)。由于 Cloud Run 中的容器无法相互了解或看到(我假设),因此我认为解决此问题的正确方法是使用 pubsub。
如果有更适合这种情况的工具,请指出正确的方向。
解决方案
您只能推送到服务端点 (URL),而不是该服务的单个实例。
每个 Cloud Run 服务只有一个容器。您可以通过每个实例的最大请求数(并发)来控制创建的实例数。
Cloud Run 实例是根据流量动态创建和销毁的。Pub/Sub 是一种基于订阅的服务。每个订阅者都会收到一份消息副本。您在某个时间点查看同一消息的 X 个副本,而在另一个时间点查看 Y 个副本。这违反了消息传递的 Pub/Sub 模型。
推荐阅读
- java - 我想从字符串中获取某个整数
- docker - 在容器内找不到 Docker 文件错误以创建新映像
- c++ - 抛出异常:写访问冲突。newNode 是 nullptr
- c++ - 代码在编译时产生三个错误
- python - 如何向预训练的对象检测模型添加其他类并训练它以检测所有类(预训练 + 新)?
- python - 如何避免多个“elif”语句?
- spring-boot - WebSphere ND 8.5.5.15 - SpringBoot 2.1.8.RELEASE - 应用程序已安装、启动,但我无法访问它
- html - 使用 Retina 和非 Retina 显示器优化图像的最佳方法是什么?
- java - 尝试将日期转换为本地时区时出错
- python - 我正在尝试使用 python3 为我的 wordpress 网站创建一个爬虫