【问题标题】:google cloud pubsublite client on a serverless service无服务器服务上的谷歌云 pubsublite 客户端
【发布时间】:2021-03-05 04:12:22
【问题描述】:

首先,我想将这篇文章标记为 google-cloud-pubsub-lite,但它尚未创建,我深表歉意

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

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

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

我想知道几个问题:

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

谢谢

【问题讨论】:

    标签: google-cloud-platform google-cloud-pubsub google-cloud-pubsublite


    【解决方案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 毫秒内)正常退出。
      • 如果服务超时时间接近(例如15s前),停止拉取并优雅退出。

    像这样,您可以让多个客户订阅同一个订阅(规模 + 1 每分钟 并且每个调度程序,如果之前的运行仍然处于活动状态)

    此解决方法保持无服务器模式。如果没有消息,则在 500ms 后或没有新消息时停止拉取。随着流量的增加。


    但是,我不明白你的廉价活动商店的概念。

    • PubSub lite 不是现收现付模式,而是平面模式。您保留容量,即使未使用,也需要 24/7 全天候付费
    • PubSub lite 是区域性的,对 HA 来说很危险
    • 您可以将事件保持到分区已满。但是将活动存储在其他地方会不会更便宜?大查询?火库? Cloud SQL?

    【讨论】:

    • 感谢您如此详尽的回复。关于定价,文档说 pubsub lite 比 PubSub 便宜一个数量级。我不明白你是什么意思艺术“对 HA 很危险”
    • this table。如果您对此有任何疑问,请不要犹豫!
    • 再次感谢,我想我会继续使用 regula PubSub。关于为活动选择商店有什么建议吗?我想对于事件溯源,如果我最终决定使用这种模式,Firestore o Cloud SQL 将是一个更好的选择。
    • 一切都取决于您将如何使用事件以及您期望的事件数量。 Firestore 很棒,而且是无服务器的,但查询能力有限(只允许简单查询)。 Cloud SQL(和 BigQuery)允许您创建复杂的查询、为什么是 john、多个“where”条件……
    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多