kafka之partition消费者并行度测试心得

本文通过实测分析Kafka消费者配置topicCountMap与partitionCount的关系,揭示了消费者负载均衡的最佳实践,确保消息系统高效运行。

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最大的吞吐量优势。

在 Apache Kafka 中,**直接删除某个 Topic 的 Partition 是不被支持的操作**,因为 Kafka 的设计原则中,Partition 是 Topic 的基本存储和处理元,其数量在创建 Topic 时就已经确定,并且在整个生命周期内不能直接减少 Partition 的数量。 如果需要调整 Partition 的数量,只能通过以下方式间接实现: ### 1. 删除并重新创建 Topic 这是目前 Kafka 社区推荐的方法之一。具体流程如下: - **删除原 Topic**:使用 Kafka 提供的命令行工具删除原有 Topic。 ```bash bin/kafka-topics.sh --zookeeper <zookeeper_connect> --delete --topic <topic_name> ``` - **重新创建 Topic**:在创建时指定新的 Partition 数量。 ```bash bin/kafka-topics.sh --create --topic <topic_name> --partitions <new_partition_count> --replication-factor <replication_factor> --zookeeper <zookeeper_connect> ``` 此方法适用于非生产环境或可以接受数据丢失和重建的场景[^1]。 ### 2. 使用 Kafka Tool 等可视化工具 一些第三方工具如 Kafka Tool 提供了图形化界面来管理 Kafka 集群,包括删除和重新创建 Topic 的功能。这些工具本质上也是执行了删除和创建 Topic 的操作,只是对用户来说更加友好和直观。 ### 3. 注意事项 - **数据丢失风险**:删除 Topic 会清除所有与该 Topic 相关的数据,无法恢复,因此在生产环境中需谨慎操作。 - **消费者组偏移量问题**:如果消费者组已经提交了 Offset,删除 Topic 后重新创建,消费者组可能需要手动重置 Offset 或重新初始化消费位置[^3]。 - **ZooKeeper 配置清理**:在某些版本中,即使 Topic 被删除,ZooKeeper 中仍可能残留部分元数据信息,需手动清理以避免冲突。 ### 4. 替代方案 如果只是希望减少负载或优化资源分配,可以考虑以下替代方法: - **使用更少的消费者实例**:通过调整消费者组内的实例数量来控制消费并行度。 - **合理规划 Partition 数量**:在创建 Topic 时预估吞吐量,合理设置 Partition 数量,避免频繁调整。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值