【问题标题】:Query Kafka topic for specific record查询 Kafka 主题以获取特定记录
【发布时间】:2016-06-13 04:01:22
【问题描述】:

是否有一种优雅的方式来查询 Kafka 主题以获取特定记录?我正在构建的 REST API 获取一个 ID,并且需要在 Kafka 主题中查找与该 ID 关联的记录。一种方法是通过自定义消费者检查主题中的每条记录并寻找匹配项,但我想避免读取一堆记录的开销。 Kafka 是否具有快速的内置过滤功能?

【问题讨论】:

  • 正如 Chris 所指出的,Kafka 提供了一些机制来检索单个记录。但我要提醒的是,这样做并不是 Kafka 的主要设计目的,kafka.apache.org/documentation.html#uses。如果您主要使用 Kafka 从主题中检索单个消息,则使用不同的软件可能更适合您的用例。
  • 是的,我决定实现一个写入 Mongo 数据库的 Kafka 消费者,然后我的 REST API 可以从那里请求各个记录。我对克里斯的回答投了赞成票,因为它证实了我的怀疑,即这是不可能的(至少优雅地)。

标签: apache-kafka


【解决方案1】:

在 Kafka 中搜索记录的唯一快速方法(过于简单化)是通过分区和偏移量。新的生产者类可以通过期货返回写入消息的分区和偏移量。您可以使用这两个值来非常快速地检索消息。

因此,如果您将 ID 从分区和偏移量中取出,那么您可以实现快速查询。否则,没有那么多。这意味着对象的 ID 不是数据模型的一部分,而是由 Kafka 知识代码生成的。

也许这对你有用,也许它不。

【讨论】:

【解决方案2】:

这对你来说可能会迟到,但它会帮助其他人如何看待这个问题,现在有 KSQL,kafka sql 是一个开源的流式 SQL 引擎

https://github.com/confluentinc/ksql/

【讨论】:

  • AFAIK Kafka Streams 进行客户端过滤,而不是在代理上。因此,您仍然通过网络获取所有数据。
【解决方案3】:

如果您想要一种简单的方法来查询/重放特定 Kafka 事件,请查看 batch.sh。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多