我发布的消息,Kafka是消费了一些消费者。它们是幂等的,所以一条消息被多次使用并不重要。但是,出于性能原因,我不希望我的(单个)生产者发布队列中已经存在的消息。假设消息只是id字符串,所以很容易检查两条消息是否相等。我想,Kafka一个人并不是为了应付这种绩效提升。有什么工具或概念可以帮助处理这个问题吗?
bzzcjhmw1#
Kafka不太适合任何可以归结为大海捞针的事情,因为你所能做的只是线性搜索。在kafka中获得很少超过一次的交付可能最好是通过使用具有更好查询支持的外部数据存储来实现(cassandra或elasticsearch是这里众多选项中的两个)。然后让producer检查它想要写入的消息是否在该数据存储中,并且让主题的使用者将消息写入该数据存储。如果没有基于大小的保留和键控方案(不同的消息具有相同的密钥),这应该是故障安全的(这意味着我想不出它是如何做到的):您不会错误地决定不编写您应该编写的消息。
1条答案
按热度按时间bzzcjhmw1#
Kafka不太适合任何可以归结为大海捞针的事情,因为你所能做的只是线性搜索。
在kafka中获得很少超过一次的交付可能最好是通过使用具有更好查询支持的外部数据存储来实现(cassandra或elasticsearch是这里众多选项中的两个)。然后让producer检查它想要写入的消息是否在该数据存储中,并且让主题的使用者将消息写入该数据存储。如果没有基于大小的保留和键控方案(不同的消息具有相同的密钥),这应该是故障安全的(这意味着我想不出它是如何做到的):您不会错误地决定不编写您应该编写的消息。