发布时间:2025-12-09 11:50:01 浏览次数:1
#1. 配置user+clientid。例如,针对”user1”,”clientA”的配额是10MB/sec,其它clientid的默认配额是5MB/sec。znode: ${kafka_rootdir}/config/users/user1/clients/clientid; value: {"version":1,"config":{"producer_byte_rate":"10485760","consumer_byte_rate":"10485760"}}znode: {kafka_rootdir}/config/users/user1/clients/<default>; value: {"version":1,"config":{"producer_byte_rate":"5242880","consumer_byte_rate":"5242880"}}#2. 配置user。例如,”user2”的配额是1MB/sec,其它user的默认配额是5MB/sec。znode: ${kafka_rootdir}/config/users/user1; value: {"version":1,"config":{"producer_byte_rate":"1048576","consumer_byte_rate":"1048576"}}znode: ${kafka_rootdir/config/users/<default>; value: {"version":1,"config":{"producer_byte_rate":"5242880","consumer_byte_rate":"5242880"}}#3. 配置client-id。例如,”clientB”的配额是2MB/sec,其它clientid的默认配额是1MB/sec。znode:${kafka_rootdir}/config/clients/clientB'; value:{“version”:1,”config”:{“producer_byte_rate”:”2097152”,”consumer_byte_rate”:”2097152”}}</li>znode:${kafka_rootdir}/config/clients/; value:{“version”:1,”config”:{“producer_byte_rate”:”1048576”,”consumer_byte_rate”:”1048576”}}`3 优先级
首先,我们需要明白,kafka在管理配额的时候,是以“组”的概念来管理的。而管理的对象,则是producer或consumer到broker的一条条的TCP连接。
那么在进行额度管理的时候,kafka首先需要确认,这条连接属于哪个“组”,进而确定当前连接是否超过了所属“组”的总额度。
在进行“组”判定的时候,依照以下的优先级顺序依次判定:
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>
一旦找到了符合的“组”,即中止判定过程。
如果连接超过了配额值会怎么样呢?kafka给出的处理方式是:延时回复给业务方,不使用特定返回码。
具体到producer还是consumer,处理方式又有所不同: