【问题标题】:Distribute 1 Pub/Sub Topic Messages across multiple Cloud Functions without repetition跨多个 Cloud Functions 分发 1 个 Pub/Sub 主题消息而不重复
【发布时间】:2023-01-12 22:33:23
【问题描述】:

我有 8 个由 Pub/Sub 主题触发的云函数。

示例问题: 当 16 条消息发布到 Pub/Sub 主题时,将触发所有 8 个函数,并且 8 个函数中的每一个都接收到所有 16 条消息。

期望的结果: 当 16 条消息发布到 Pub/Sub 主题时,将触发所有 8 个函数,这 8 个函数中的每一个都应该接收只有 2消息。

有办法解决这个问题吗?

我试过:设置 1 个 pub/sub 主题,1 个 pub/sub 订阅,从 1 个订阅触发 8 个函数,但在 yaml 文档和云控制台中,我似乎只能从主题触发函数,而不是现有订阅.

可能但不是理想的解决方案: 在 8 个不同的发布/订阅主题中对(示例)16 条消息进行负载平衡,然后每个函数由 1/8 个主题触发(每个主题 2 条消息)。

【问题讨论】:

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


    【解决方案1】:

    拥有 8 个独立的 Cloud Functions 是一种反模式,您希望在这些 Cloud Functions 上负载平衡消息。如果每个代码都相同,那么您实际上应该只有一个 Cloud Function,并让它的自动缩放行为负责根据需要打开实例来处理传入的消息。

    如果 8 个函数有不同的代码,那么您希望每个函数只处理消息的一个子集是违反直觉的,除非您希望它们根据消息本身的某些属性路由到函数,在这种情况下您想要设置 8 个使用 filters 的订阅。

    如果您寻求的行为确实是您所需要的,那么您可能需要在两者之间放置一个单独的 Cloud Functions,它接收所有消息并将其分发到其他 Cloud Functions,而不是使用 Pub/Sub 作为触发器,而是使用 HTTP 请求。然后,您可以从接收 Pub/Sub 消息的单个函数发出 HTTP 请求,并根据需要将它们分发给其他 8 个函数。

    【讨论】:

      猜你喜欢
      • 2021-10-08
      • 2022-01-01
      • 2020-08-31
      • 1970-01-01
      • 2022-08-22
      • 2021-12-04
      • 1970-01-01
      • 2020-02-21
      • 2020-10-11
      相关资源
      最近更新 更多