卡夫卡诺布在这里!我有两个问题:
1)考虑少数Kafka消费者在不同的Kubernetes pod上运行,作为同一Kafka消费者群体的一部分。这些pod正在使用的主题是压缩主题。现在,让我们说其中一个豆荚下降并在一段时间内出现。现在我的问题是,有问题的消费者是否会接收来自压缩的Kafka主题的所有消息?或者,它是否只收到从失败中恢复后到达的主题?
2)我知道Kafka消费者从“承诺的偏移量”开始从分区接收主题。如果“压缩主题”,它将如何工作,因为Kafka将仅发送具有最新偏移量的事件
答案 0 :(得分:1)
消费者对压缩主题的工作方式与非压缩主题相同。在压缩期间,如果存在具有相同键的偏移,则仅保留最新的键,但是从不删除压缩的偏移,它保持指向最新的键 例如。如果偏移10,11,12具有相同的密钥,则在压缩之后仅保留第12个偏移密钥,并且任何消费者获取偏移10,11或12,它将获取相同的结果,即存储在偏移12处的键值(如10,11的键值被删除)
提出你的问题 -
1.消费者可以从所需的偏移中获取,唯一的事情是,如果某些偏移被压缩,您将获得压缩偏移的最新值
2.如上所述,消费者将继续从最后提交的偏移量中获取,如果要提取的偏移量已经压缩,则可能会收到重复的消息
在下面的kafka链接中详细参考压缩逻辑 https://kafka.apache.org/documentation.html#design_compactionbasics