Kafka Connect SMT 具有缓存值查找功能

问题描述 投票:0回答:1

我正在使用 Kafka Connect 接收器连接器从 Kafka 读取事件并将其插入数据库。 某些事件在其值负载中包含引用。我想使用 SMT 通过缓存查找来解析这些引用,以将它们在值负载中替换为其引用的实体。

例如:值负载从

{id: 12}
转换为
{name: "the-referenced-entity}
,其中缓存为
{12: "the-referenced-entity", ...}

思考解决方案:

  • 我在 SMTs 中看到的问题是我无法在不同记录之间共享状态,例如每次应用转换时,我都必须重建缓存(=慢)。 SMT 是无状态/纯粹的。
  • 我可以使用外部缓存(例如Redis),但这仍然会引入一些网络延迟(=慢?)。
  • 我当然可以围绕 Kafka Connect 工作并创建自己的自定义消费者,但我会失去 Kafka Connect 提供的很多好处。

此用例是否有已知的最佳实践?

apache-kafka apache-kafka-connect
1个回答
0
投票

如果你想共享一些缓存,你可以在每个worker的主机上运行一些分布式数据库。那么就只是本地网络调用,而不是远程网络调用。

否则,只需按原样生成 ID。例如,使用 Kafka Streams / ksqlDB 进行 Stream-Table join 操作,其中 ID 可以被转换。 (KStream 作业也可以在 Connect 工作线程上运行)

© www.soinside.com 2019 - 2024. All rights reserved.