我计划写一篇关于根据条件搜索消息的博客。我觉得这个领域缺少工具/框架,而这对任何 Kafka 运营团队/开发团队来说都是一项常规活动。
这是我在 UI 中研究的第一个选项。大多数基于 UI 的 kafka 工具无法很好地搜索大型主题,至少我见过的是这样。
然后,如果我们可以使用基于 CLI 的工具,例如 kcat 或 kafka-*-consumer,它们可以在一定程度上扩展,但缺乏广泛的搜索功能。
这些促使我开始研究使用 kafka 连接器并添加过滤器 SMT 或可能使用 KSQL。或者用自己喜欢的语言编写完全原生的开发。
当然,我们可以将消息转储到存储桶或其他地方,然后在此基础上进行搜索。
我读到过 Conduktor 提供了一些使用 SQL 搜索的功能,但不确定它有多好?
向社区提问 - 您使用什么来搜索 Kafka 中的消息?我上面提到的任何一种工具...或者更好的工具。
简而言之,缺乏工具,因为 Kafka 并非用于“大海捞针”式的搜索。没有索引,您需要扫描整个主题(除非您可以预先计算分区),然后必须对任何记录进行反序列化,然后才能开始进行比较。
任何控制台工具(kcat、console-consumer)的问题在于,它们假设记录可以反序列化为文本;您无法轻松地 grep 二进制数据。同样,ksql/连接器仅提供某些反序列化器……这将让您不得不为任何非标准格式编写自己的工具。
Conduktor 客户端有一些 JSONPath 操作符,我相信是的。同样,这受到反序列化选项的限制。但它仍然必须消耗整个主题。
如果您必须进行快速查找,请使用可以将 Kafka 数据转储到的实际索引数据库。Elasticsearch/OpenSearch 或对象存储将是搜索任何字段的最灵活的选择。