【问题标题】:GCP: ideas on how to publish pub/sub message after a long-running process completesGCP:关于如何在长时间运行的过程完成后发布 pub/sub 消息的想法
【发布时间】:2020-07-07 01:10:39
【问题描述】:

我正在寻找一种推荐的模式,以应对我们在长期运行的 Firestore 备份过程中遇到的挑战。 Firestore 备份是触发以每晚运行的云功能。此过程目前大约需要 4 分钟。我们希望在此过程完成后将一条消息发布到 Pub/sub 主题,以便可以触发使用备份作为数据源的附加云功能。我们遇到的唯一问题是 Cloud Functions 的最大超时时间目前为 540 秒(9 分钟)。虽然我们目前处于此限制范围内,但情况可能并非总是如此。

那么,是否有推荐的 GCP 设计模式可以处理具有未知完成时间的长时间运行的进程,并且在完成后能够将消息发布到 pub/sub 主题?我在想最好向主题发布一条消息并建立一些延迟(比如 1 小时),这会阻止消息发布,直到延迟结束。我一直在研究 pub/sub 的这种能力,但到目前为止我看不到太多。即便如此:有没有更好更明显的方法来完成这项工作?

感谢任何反馈。 谢谢

【问题讨论】:

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


    【解决方案1】:

    有几种方法可以回答。

    首先,当您触发导出时,它是异步执行的。如果你想重用现有的项目,你可以使用this one(我贡献了它)。

    所以,现在您的导出正在运行。这需要时间,并且您希望在完成时收到警报,而无需在 Cloud Functions 中等待(或 Cloud Run 导出已完成并花时间等待(因此无需支付任何费用!))。 2 解决方案

    1. 创建导出后,您有一个操作名称。
    • 在未来几秒 (10) 后创建一个 Cloud Task 以触发 Cloud Functions。
    • 云函数对操作执行 GET
      • 如果状态成功,将消息发布到 PubSub
      • 否则,在未来几秒钟内创建一个新任务 (10)。
    1. (我的首选)创建导出时,您会在 Google Cloud Storage gs://myBucket/myExport 中创建一个文件。因此,请使用 google Cloud Storage 通知功能
    • 在 PubSub 上接收云存储通知。
    • 创建一个仅过滤前缀为 gs://myBucket/myExport/myExport 的文件的订阅。你可以看看my article for more detail
    • 当 pubsub 消息到达订阅时触发您想要的端点。

    【讨论】:

    • 我非常感兴趣地阅读了您的文章,我喜欢这种方法。我最初尝试在存储桶上触发存储云功能,直到我很快意识到它被调用了数百次以进行备份。您的方法消除了这种担忧,发布-订阅过滤器意味着我们仅在满足过滤条件时触发。杰出的。谢谢您的帮助!标记为答案。
    • 过滤功能很新!!我用那个请求谷歌这么多月了!!!我对这个功能感到非常高兴,以至于我在测试版发布后的第二天写了这篇文章!!
    猜你喜欢
    • 2019-12-17
    • 2020-01-03
    • 2019-04-10
    • 2022-01-01
    • 1970-01-01
    • 2020-02-05
    • 2019-02-05
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多