我正在考虑从Kafka中丰富数据的解决方案。现在我正在使用实现Mongo-KafkaConnect来同步对Kafka的所有更改。kafka连接使用更改流来监视操作日志和对kafka的公开更改。Mongo的收藏与卡夫卡主题的关系是1:1。在使用者端,当它提取数据时,它将获得我们需要加入到其他集合以获取数据的引用id。要在集合之间连接数据,我有以下两个解决方案。
-
当消费者提取数据时,需要返回Mongo数据库,根据引用键提取或连接数据或集合。
- 对于这种方式,我担心需要返回到Mongo数据库的连接数量
-
使用kafka流连接主题之间的数据。
- 对于第二个解决方案,我想知道如何将主数据永远保存在主题中,以及如何在数据库表等主题中维护记录,这样每一行都有唯一的索引,当数据更改到达主题时,我们可以更新记录
如果您有任何其他解决方案,请告诉我。
您的消费者可以随心所欲。不过,您可能需要根据数据库查找增加各种Kafka超时配置。
Kafka主题可以使用retention.ms=-1
无限保留,也可以通过压缩来无限保留。当您使用压缩时,它将类似于KV存储(但作为日志(。要获得一个实际的查找存储,您可以构建一个KTable,然后根据它加入一个主题流
本页介绍了Kafka Streams中的各种连接模式-https://developer.confluent.io/learn-kafka/kafka-streams/joins/
您也可以使用ksqlDB