Google 用于分布式状态管理的 PubSub 队列

Google PubSub queue for distributed state management

我有 n 个工作所依赖的来源。 每个来源在 Google PubSub 中都有一个单独的主题;当源更新时,它会在相应的主题订阅中发送一条消息。当 all 源更新时(即当每个订阅中至少有一条新消息时)作业可以开始。 这项工作是用气流安排的。 DAG 从一系列并行任务开始,每个订阅一个,检查是否有新消息已发布,但不知情。下一个任务等待所有之前的任务并使用 XCOM 查看 all 是否包含消息。在这种情况下,它会继续工作(它首先会收到消息),否则会停止。 通过这种方式,我仅在消息全部可用时才确认消息,使用 PubSub 作为 协调器 。消息频率最多一天一到两次

基本上我使用 PubSub 作为保持“状态”的方式。假设我有不同的工作依赖于同一个来源。我可以为每个作业的相同主题创建订阅,一切正常。

有没有更好的way/tool/framework来做到这一点?

根据您拥有的消息量以及我之前的实现,我可以建议您在 Firestore 中持久化状态:无服务器、负担得起、快速...

发布消息时,触发在 Firestore 中保持状态的函数

然后,触发你想要的进程数,查询Firestone是否所有状态都OK,继续或停止。

这是我的同步模式。不是最好的!


无论如何,如果您为每个进程创建一个订阅,它也可以。该消息在每个订阅中都是重复的,因此您可以独立处理它们。