Google Cloud 目前只提供一个名为Cloud Composer的工作流管理器(基于Apache Airflow 项目)(我不考虑 AI Platform 工作流管理器(AI Pipeline))。这个托管解决方案允许您执行与现在使用 Celery 相同的操作
- 发生事件
- 调用 Cloud Function 来处理事件
- Cloud Function 触发 DAG(Diagram Acyclic Graph - Airflow 中的工作流)
- DAG中的一个步骤运行了很多子进程(Cloud Function/Cloud Run/任何其他)等待结束,然后继续下一步......
2个警告:
- Composer 很贵(每月大约 400 美元,对于最小配置)
- DAG 是无环的。没有循环被授权
注意:新的工作流程产品应该会出现在 GCP 上。目前没有 ETA,并且一开始就需要管理并行性。IMO,这个解决方案适合你,但不是短期的,可能在 12 个月内
关于 MQTT 队列,可以使用PubSub,非常高效且实惠。
选择
您可以按照此过程构建自己的系统
- 发生事件
- 调用 Cloud Function 来处理事件
- 云功能需要批量创建尽可能多的 PubSub 消息。
- 对于生成的每条消息,您在 Firestore 中写入一个带有初始事件的条目,以及 messageId
- 生成的消息被消费(由 Cloud Function、Cloud Run 或其他任何东西),并且在流程结束时,Firestore 条目会更新,说明子流程已完成
- 您在 Firestore 事件 On Write 上插入 Cloud Function。该函数检查初始事件的所有子流程是否已完成。如果是这样,请转到下一步...
我们在我的公司实施了类似的工作流程。但是当出现问题时,维护和调试并不容易。否则,它工作得很好。