Experiments with Kafka's head-of-line blocking (2023)
4 months ago
- #Kafka
- #Performance
- #Message Queues
- Kafka是一个高吞吐量的分布式消息系统,但作为任务队列使用时可能出现队头阻塞问题。
- Kafka消息被发送到带有分区的主题中,消费者组中的消费者从分配的分区读取消息,若某个消费者处理速度慢会导致其他消费者闲置。
- Beanstalkd直接将任务分发给可用消费者,不存在队头阻塞,因为任务会被第一个空闲消费者从管道中取出。
- 一项对比实验显示:在五个消费者的场景下,由于队头阻塞,Kafka处理任务耗时是Beanstalkd的两倍。
- 实验结果表明:Beanstalkd能在1秒内完成100个任务中的96个,而Kafka因慢消费者会出现处理空窗期。