赞
踩
kafka是一个不错的日志收集的消息服务器,数据全部持久化到磁盘,内存开销比较少。
今天做了一个测试,测试场景如下
1.kafka的topic为tr,partition为3
2.consumer4个每个配置topicCountMap为1(每个客户端一个线程)
3.启动4个consumer
4.启动Producer发送1000个消息
测试结果如:
1.有3个consumer接收到了消息,其中有一个没有任何消息,结论没有consumer只能消费一个partition多余的consumer不会接收数据
继续测试
1.手动杀掉一个consumer(刚刚接收了数据的)
2.继续发送消息
测试结果如:
1.剩下的3个consumer都能接收到消息了。而且消息一个不少
继续测试
1.继续杀掉2个consumer
2.继续发消息
测试结果
1.最后的这个consumer接收到了全部的消息
结论 topicCountMap的设置应该为partitionCount/consumer为最佳。
如果topicCountMap单个节点设置大于partitionCount那么其他的节点就无法收取消息,就不能负载接收消息了
建议 topic的partition要多设置一个(一般为kafka节点数cpu的总核数),这样有利于发挥kafka最大的吞吐量优势。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。