PubSub lite 订阅仅支持 Pull 模式。因此,您需要创建一个或多个客户端,将它们插入订阅并获取消息。
在 serverless 模式下,您应该使用更适合可扩展性和集成性的 Push 订阅。拉取订阅模式下,需要进行微批处理
- 创建云调度程序
* * * * *
作为频率
- 调用所需的无服务器工具(Cloud Run、Cloud Function、App Engine)
- 在无服务器产品上,当您收到请求时,创建与 PubSub lite 订阅的连接并开始拉取消息。
- 如果拉取时间超过 1 分钟,则会收到来自 Cloud Scheduler 的新请求
- Cloud Function 将自动创建一个新实例并开始拉取
- Cloud Run 最多可以同时处理 80 个请求。我建议您将 Concurrency 参数设置为 1 以具有与 Cloud Function 完全相同的行为
- 你不能在 App Engine 上玩并发
- 将超时设置为最大值
- 如果没有新消息(例如在 500 毫秒内),则优雅地退出。
- 如果服务超时时间接近(例如 15 秒前),则停止拉取并优雅退出。
像这样,您可以让多个客户端订阅同一个订阅(如果上一次运行仍然处于活动状态,则每分钟和每个调度程序的比例 + 1)
此解决方法保持无服务器模式。如果没有消息,则在 500ms 后或没有新消息时停止拉取。你扩大你的流量。
但是,我不明白您对廉价活动商店的概念。
- PubSub lite 不是现收现付模式,而是平面模式。您保留容量并支付 24/7 的费用,即使它没有被使用
- PubSub lite 是区域性的,对 HA 来说很危险
- 您可以将事件保持到分区已满。但是将活动存储在其他地方会不会更便宜?大查询?火库?云 SQL?