gpt4 book ai didi

java - Kafka 存储的消息多于生产的消息

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:04 25 4
gpt4 key购买 nike

我有一个 apache-kafka 0.8 集群,具有以下设置 -

1) 3 个代理都在同一台机器上运行
2)1个主题,10个分区,3个副本。

我有 20 名制作人制作一个主题。
我有 10 个消费者从每个分区消费。我正在测试经纪人的故障安全性。

当所有代理启动并运行时,消耗的消息数量等于生成的消息数量。

但是,当我通过逐一关闭代理来测试设置时,我发现消耗的消息数量多于生成的消息数量。

可能的原因是什么?

最佳答案

首先一个想法:

除非您为每个代理拥有单独的磁盘,否则强烈建议您为每个代理使用单独的计算机。这是因为每个磁盘都有代理想要利用的最大 I/O 吞吐量,如果有多个代理使用同一磁盘,则所有代理都将竞争 I/O。

你们要多久才能让经纪商倒闭?立即终止还是优雅关闭?距离下一个经纪人被杀死还有多长时间?您的消息确认级别是多少?您生成消息的速率是多少?

如果你杀死一个代理太慢,那么生产者可能已经向垂死的代理发送了一条消息,该消息通过竞争条件可能已经复制了它,但它在死亡之前不会向生产者发送确认。这会导致生产者认为消息没有成功复制,然后它会尝试将相同的消息发送给新的领导者。新的领导者会认为重复的消息是一条新消息,因此将其添加到日志中。

这是一种竞争条件,除非在高生产率和确认级别 -1 下,否则不太可能发生。

关于java - Kafka 存储的消息多于生产的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16497163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com