我得到了一些用例,承包商在我的住房项目中工作一段特定的时间。我想把它Map到Kafka,然后想到这样一个主题:
key : {"validFrom":"2019-09-01", "validTill":"2019-10-10", "name":"contractor1"}
信息是一个更为复杂的问题,就像在哪一个工作日变动的成本一样 contractor1
“为我工作。
我的另一个服务将查询“2019-10-02”的主题和链接到密钥的消息,该密钥介于 validFrom - validTill
,将被退回。
这是使用Kafka的一种有意义的方式,还是我的思维方向错了
1条答案
按热度按时间qyzbxkaa1#
如果“时间点”指的是消息创建的时间,那么可以通过消息时间戳进行搜索—这种搜索非常有效,因为时间戳在服务器端被索引。
如果您想根据某个消息字段的值(如“validfrom”)来查找消息(对于大型主题,这需要一些时间),则必须扫描主题中的每条消息。所以,将这两种方法结合使用是有意义的。
一些ui工具允许你做这种开箱即用的搜索,看看Kafka魔术https://www.kafkamagic.com - 它允许使用标准javascript和时间戳/分区/偏移过滤器来编写复杂的查询。
如果您正在编写自己的解决方案—针对多种语言的标准kafka客户端sdk提供了按时间戳定位消息的方法—请将您的使用者指向开始时间戳,然后一条接一条地阅读消息,直到找到您要查找的内容。这是一个非常有效的方法。