kafka的客户端限流(资源配额)

前言

本文说明的是Kafka的客户端(生产者、消费者)与broker之前的限流,不是kafka的broker间topic副本同步的限流。

客户端限流

在kafka的官方文档,不叫限流,叫做资源配额:通过对客户端请求进行配额,控制集群资源的使用。

主要支持以下两种类型:

  1. 带宽 (从 0.9 版本开始)
  2. 请求速率 (从 0.11 版本开始)

带宽就是基于每秒传输多少个字节来进行限制;但是,注意,请求速率并不是每秒客户端可以发起多少个请求,而是网络和 I/O线程 cpu利用率的百分比。

规则

kafka 客户端以“组”来进行配额限流。同组下的所有客户端共享带宽配置,比如:配置带宽10M/秒,则该组所有客户端限制总带宽使用为10M每秒;但是请求速率指的是每个组的client 使用broker上的cpu的百分比。

组的分类规则如下:

  • (user, client-id)
  • user
  • client-id 

client-id: 客户端ID,这个比较熟悉,比如在启动一个消费者的时候,配置的一个属性:

        // client.id
        props.put(ConsumerConfig.CLIENT_ID_CONFIG, "test-consumer-id");

 如果不配置,会生成一个默认的:

User需要是开启ACL之后的一个用户主体标识,很多同学如果没用过kafka的ACL,可能对这个不太了解,可以看下这个:kafka快速配置启用ACL示例_不识君的荒漠的博客-CSDN博客_kafka-acls.sh --bootstrap-server 

而(user, client-id)这个二元组,就是需要同时指定用户主体标识和客户端ID作为一组分类。

配置位置与优先级

我目前查看官方3.3的文档 Kafka 3.3 Documentation这些配置信息还是在zookeeper上:

  1. /config/users/<user>/clients/<client-id>
  2. /config/users/<user>/clients/<default>
  3. /config/users/<user>
  4. /config/users/<default>/clients/<client-id>
  5. /config/users/<default>/clients/<default>
  6. /config/users/<default>
  7. /config/clients/<client-id>
  8. /config/clients/<default>

数字越小,优先级越高。

注意:支持broker级别的配置,但是未验证(我目前用来测试的版本是2.8)。

命令

1. 基于(user, client-id)限流配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --describe --entity-type users --entity-name userName --entity-type clients --entity-name clientId

2. 指定用户

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --describe --entity-type users --entity-name userName

3. 用户级默认配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --alter --add-config 'producer_byte_rate=1024,consumer_byte_rate=2048,request_percentage=200' --entity-type users --entity-default

4. 指定客户端ID

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --alter --add-config 'producer_byte_rate=1024,consumer_byte_rate=2048,request_percentage=200' --entity-type clients --entity-name clientId

5. 客户端ID级默认配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --alter --add-config 'producer_byte_rate=1024,consumer_byte_rate=2048,request_percentage=200' --entity-type clients --entity-default

6. (user, client-id)级默认配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --alter --add-config 'producer_byte_rate=1024,consumer_byte_rate=2048,request_percentage=200' --entity-type users --entity-name userName --entity-type clients --entity-default

7. 查看(user, client-id)级配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --describe --entity-type users --entity-name userName --entity-type clients --entity-name clientId

8. 查看用户级配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --describe --entity-type users --entity-name userName

如果不指定--entity-name,则是查看所有用户 

9. 查看客户端ID级配置

sh bin/kafka-configs.sh  --bootstrap-server localhost:9092 --describe --entity-type clients --entity-name clientId

如果不指定--entity-name,则是查看所有客户端ID的配置 

注意:

  1. producer_byte_rate=1024,consumer_byte_rate=2048,request_percentage=200三项并不是都需要配置,按需要配置
  2. 查看配置的时候,对于同一个客户端ID,既在客户端ID级别配置了,又在(user, client-id)级配置,查看的时候,也是分开查看。(user, client-id)级配置只能看到(user, client-id)级的配置。客户端ID级别配置只能看到客户端ID级别配置。

官方文档(中文版)

推荐查看:

Kafka 中文文档 - ApacheCN

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不识君的荒漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值