Kafka流浓缩-查找表的来源

时间:2018-08-21 16:07:14

标签: apache-kafka apache-kafka-streams apache-kafka-connect spring-kafka

有一个Kafka流组件,可从主题中获取JSON数据。现在,我必须执行以下操作:

  1. 解析输入的JSON数据并获取特定ID的值 (标识符)属性
  2. 针对Oracle数据库中的特定表进行查询
  3. 使用查找表中的数据丰富输入JSON
  4. 将丰富的JSON数据发布到另一个主题

实现步骤2的最佳设计方法是什么?我对如何执行其他步骤有一个很清楚的想法。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

根据您正在讨论的数据集的大小和流的大小,我将尝试尽可能多地缓存数据库(假设它不会经常更改)。通过查询每条记录中的数据库来增强数据在延迟和性能方面都是非常昂贵的。

我之前完成此操作的方法是实例化一个线程,该线程的唯一任务是维护新的本地缓存(通常是ConcurrentHashMap),并将其提供给需要它的进程。在这种情况下,您可能想要创建一个处理器,为其提供对上述ConcurrentHashMap的引用,然后在输入Kafka记录时,使用键查找数据,扩大记录,并将其发送至Sink处理器或其他Streams处理器,具体取决于您要使用的处理器。

万一查找失败,您可以回退以按需对数据库进行实际查询,但是您可能要测试和分析此信息,因为在最坏的情况下,缓存未命中率为100%,您将经常查询数据库。