0

首先,我想将这篇文章标记为 google-cloud-pubsub-lite,但它还没有创建,我很抱歉

我正在尝试使用 pubsub lite 进行介绍。我认为它可以用作在 GCP 项目中获取事件存储的“廉价”方式。

我们通常创建 GAE 标准服务,因此我们为使用的服务付费,同时它提供了出色的可扩展性。

阅读有关当前如何订阅 pubsub lite 的示例,我发现没有提供端点来接收新消息的选项。客户端连接到订阅并等待新消息流式传输抛出连接。

我想知道几个问题:

  • 我们可以在 Cloud Function 或 GAE 标准服务的端点中接收来自 pubsub lite 主题的消息吗?
  • 我们如何扩展到多个客户的主题订阅

谢谢

4

1 回答 1

1

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?
于 2020-11-22T13:13:23.837 回答