【发布时间】:2019-03-10 22:38:55
【问题描述】:
全部,
我有一个要求,我需要重新提取一些旧数据。我们有一个多阶段管道,其来源是 Kafka 主题。一旦将一条记录输入其中,它就会经过一系列步骤(大约 10 个)。每一步都会对推送到源主题的原始 JSON 对象进行按摩,并推送到目标主题。
现在,有时,我们需要重新摄取旧数据并应用我上面描述的步骤的子集。我们打算将这些重新摄取的记录推送到不同的主题,以免阻塞正在通过的“实时”数据,这可能意味着我可能只需要应用上面描述的 10 个步骤中的 1 个步骤。从上面通过整个管道运行它是浪费的,因为每个步骤都非常耗费资源并调用多个外部服务。此外,我可能需要一次重新摄取数百万个条目,所以我可能会阻塞我的外部服务。最后,这些重新安置活动并不那么频繁,有时可能每周只发生一次。
假设我是否能够从上面弄清楚我需要执行哪些步骤。这可以通过一个基本的规则引擎来完成。完成后,我需要能够动态创建拓扑/能够部署从新创建的主题开始处理的拓扑。同样,我想在运行时部署的原因是这些活动,尽管对业务至关重要,但不会那么频繁地发生。而且每次我需要执行的步骤都可能发生变化,所以我们不能总是让整个管道运行。
有没有办法做到这一点?还是我什至在思考正确的方向,即我上面概述的方法是否正确?任何指针都会有所帮助。
【问题讨论】:
标签: apache-kafka apache-storm apache-kafka-streams flink-streaming