全部,
我有一个需要重新记录一些较旧数据的要求。我们有一个多阶段的管道,其来源是一个Kafka主题。一旦记录被输入,它就将经历一系列步骤(大约10个)。每个步骤都会对推送到源主题的原始JSON对象进行按摩,并推送到目标主题。
现在,有时候,我们需要重新摄取较旧的数据,并应用上述步骤的子集。我们打算将这些最新记录推到另一个主题,以免阻止正在通过的“实时”数据,这可能意味着我可能只需要应用上述10个步骤中的1个步骤即可。从上方在整个管道中运行它非常浪费,因为每个步骤都占用大量资源,并需要多个外部服务。另外,我可能需要一次重新输入数百万个条目,因此可能会阻塞我的外部服务。最后,这些重新设置活动不是那么频繁,有时可能仅一周一次。
让我们说一下是否能够找出需要执行的步骤。这可以通过基本规则引擎来完成。完成后,我需要能够动态创建拓扑/能够部署拓扑,并从新创建的主题开始进行处理。同样,我想在运行时上进行部署的原因是,尽管这些活动对业务至关重要,但是却不会经常发生。而且每次,我需要执行的步骤可能都会更改,因此我们不能总是让整个管道都在运行。
有没有办法做到这一点?还是我什至在朝着正确的方向思考,即我上面概述的方法是否正确?任何指针都会有所帮助。
答案 0 :(得分:2)
我建议您创建一个动态拓扑,以便将重新摄取的数据作为单独的Kafka Streams应用程序使用。而且,如果您想以编程方式即时创建此类应用程序并在完成后将其终止,请考虑以下方法: