全网最详细的大数据Kafka文章系列,强烈建议收藏加关注!

新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。

目录

系列历史文章

Kafka配额限速机制

限制producer端的速率

限制consumer端的速率

取消kafka的Quota配置


系列历史文章

2021年大数据Kafka(十二):❤️Kafka配额限速机制❤️

2021年大数据Kafka(十一):❤️Kafka的消费者负载均衡机制和数据积压问题❤️

2021年大数据Kafka(十):kafka生产者数据分发策略

2021年大数据Kafka(九):kafka消息存储及查询机制原理

2021年大数据Kafka(八):Kafka如何保证数据不丢失

2021年大数据Kafka(七):Kafka的分片和副本机制

2021年大数据Kafka(六):❤️安装Kafka-Eagle❤️

2021年大数据Kafka(五):❤️Kafka的java API编写❤️

2021年大数据Kafka(四):❤️kafka的shell命令使用❤️

2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

2021年大数据Kafka(二):❤️Kafka特点总结和架构❤️

2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️

Kafka配额限速机制

生产者和消费者以极高的速度生产/消费大量数据或产生请求,从而占用broker上的全部资源,造成网络IO饱和。有了配额(Quotas)就可以避免这些问题。Kafka支持配额管理,从而可以对Producer和Consumer的produce&fetch操作进行流量限制,防止个别业务压爆服务器。

限制producer端的速率

为所有client id设置默认值,以下为所有producer程序设置其TPS不超过1MB/s,即1048576/s,命令如下:

bin/kafka-configs.sh --zookeeper node1:2181 --alter --add-config 'producer_byte_rate=1048576' --entity-type clients --entity-default

运行基准测试,观察生产消息的速率

bin/kafka-producer-perf-test.sh --topic test --num-records 50000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1

限制前:

限制后:

结果:

50000 records sent, 1120.222252 records/sec (1.07 MB/sec)

限制consumer端的速率

对consumer限速与producer类似,只不过参数名不一样。

为指定的topic进行限速,以下为所有consumer程序设置topic速率不超过1MB/s,即1048576/s。命令如下:

bin/kafka-configs.sh --zookeeper node1:2181 --alter --add-config 'consumer_byte_rate=1048576' --entity-type clients --entity-default

运行基准测试,观察消息消费的速率

bin/kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test --fetch-size 1048576 --messages 50000

限制前:

限制后:

结果:

MB.sec: 0.9308

取消kafka的Quota配置

bin/kafka-configs.sh --zookeeper node1:2181 --alter --delete-config 'producer_byte_rate' --entity-type clients --entity-defaultbin/kafka-configs.sh --zookeeper node1:2181 --alter --delete-config 'consumer_byte_rate' --entity-type clients --entity-default