在微服务之间使用Kafka时,我如何设计一种机制来知道工作是否已经完成?



我正在处理一个有几个组件的工作流,这些组件需要从Kafka主题消费记录并生成另一个主题。看起来,ComponentA向TopicA生成记录。然后ComponentB从TopicA消费记录,进行一些处理,并向TopicB生成记录。组分C, D…

我的问题是我怎么能知道在ComponentA(或任何组件)上,如果工作已经通过ComponentA到ComponentD完成?

现在,我正在监控每个主题的滞后,并选择在从Kafka主题消费记录时手动向Kafka代理确认,以便我可以准确地知道记录是否已被处理。但是这给我带来了很多麻烦,如果我想并行运行两个作业,它会给我带来更多的麻烦。对于这个问题有没有更好的或替代的解决方案?

您可以查看Saga或其他编排模式。

你可以使用工作流工具,如气流。

在高层次上,您将需要一些中央数据库来随时跟踪正在执行的步骤。给每个事件一个ID;存储哪个组件正在处理它所看到的那些事件。

相关内容

最新更新