Kafka作为数据库缓存

我有5个kafka主题,每秒将有100 msgs消息流。消息格式如下

{null,JSON}(分区:10)

我需要根据JSON中的值从过去提取一条记录,并在我的Java应用程序中进行处理。正确的方法是什么?

  1. ksqlDB流
  2. 卡夫卡流
  3. Ktable

提前致谢。

评论
  • Tate
    Tate 回复

    尽管可以将Kafka用作数据库,但我强烈建议您不要采用这种方法。 Kakfa是一个消息代理,因此,如果您想查看过去的消息,则必须重新处理整个主题

    唯一能够“优雅地”处理情况的方案是,如果您知道消息的偏移量,以便可以将消费者设置为直接到达该位置,但是由于您描述的用例,我认为你拥有了它

    我没有使用ksqlDB,但它看起来像普通的KQSL

    KSQL仅仅是在Kafka Streams之上的抽象,就像Kafka Streams在消费者-生产者之上的抽象一样。每个抽象具有较少的功能

    您可以使用任何所需的方法来实现您的目标,请注意,有多种因素会让您选择一个或另一个。

    • KSQL是最简单的方法,但是您需要一个KSQL服务器
    • (AFAIK)KSQL不适用于所有序列化格式
    • 当您遇到ETL场景时,Kafka Streams最适合(从Kafka中读取,处理消息,发送回Kafka)
    • 如果您需要对流程进行完全控制,那么常规的消费者生产者将把它交给您。