尽管有30多个kafka-monitor副本,但Kafka Topic却被阻塞

时间:2019-07-06 17:33:21

标签: python apache-kafka scrapy

卡夫卡中的

demo.incoming主题不断堆积。

我正在使用scrapy cluster。每秒约有70个请求通过Scrapy Cluster REST api(生产者)提交给Kafka。蜘蛛程序可以非常快速地完成爬网,因为redis中的队列数量很少,大多数情况下少于10。但是demo.incoming中的邮件数量一直在每秒累积。这是我用来检查Kafka的demo.incoming主题中消息数量的命令

kafka-run-class.sh kafka.tools.GetOffsetShell \
--broker-list localhost:9092,kafka-statefulset-2:9092,kafka-statefulset-1:9092 \
--topic demo.incoming \
--time -1 --offsets 1 | awk -F ":" '{sum += $3} END {print sum}'

我认为这是因为Kafka-monitor(Consumer)无法从Kafka接收消息,并无法足够快地推送到Redis,从而导致demo.incoming主题堆积。尽管将Kafka监视器的规模扩大到30个副本,但话题仍在不断增加。

此主题的分区数为8,显示在屏幕截图中。

enter image description here

理论上,Kafka中的邮件数量应保持在非常低的数量。因为在这种情况下,作为Kafka监控者的使用者应该考虑到该消息具有30多个副本,因此应在消息到达后立即使用它。

1 个答案:

答案 0 :(得分:1)

该命令列出了所有分区的结束偏移量,而不是主题内的“消息数”(没有计算起始结束偏移量就没有精确的命令)。您所赚的钱总会不断增加。价值的增加速度只会告诉您生产者行动的速度,而不是消耗速度。

如果您想查看消费者组尚未处理的邮件数量,可以使用kafka-consumer-groups工具

由于该主题实际上有8个分区,因此同一主题中一次最多只能有8个使用者在同一组中,尽管我不确定您的Kafka监视工具如何工作