Kafka的灵魂伴侣Logi-KafkaManger(2)之kafka针对Topic粒度的配额管理(限流)
有想进滴滴LogI开源用户群的加我个人微信: jjdlmn_ 进群(备注:进群)
群里面主要交流 kakfa、es、agent、LogI-kafka-manager、等等相关技术;
群内有专人解答你的问题
对~ 相关技术领域的解答人员都有; 你问的问题都会得到回应
有想进 滴滴LogI开源用户群 的加我个人微信: jjdlmn_ 进群(备注:进群)
群里面主要交流 kakfa、es、agent、以及其他技术
群内有专人解答疑问,你所问的都能得到回应
文章目录
-
- 技术交流
-
申请配额(限流)
-
- 针对Topic粒度的配额如何生效的
-
测试kafka限流是否成功
-
专栏文章列表
项目地址: didi/Logi-KafkaManager: 一站式Apache Kafka集群指标监控与运维管控平台
本文主要是讲解 针对Topic生产/消费 的限流配置; 如果不需要设置限流 则可忽略;
不了解kafak配额管理机制的可以先了解一下 kafka中的配额管理(限速)机制
默认创建完Topic之后是没有设置配额信息的,而且我们都知道Kafka的配额(限流)只支持三种粒度:
user + clientid
user
clientid
如果kafka集群没有开启身份认证,则只能使用clientid方式来进行限流。
但是KaFkaManager是可以支持到Topic粒度的; 假如你对kafka配额机制原理非常清楚的话,那么你就很容易理解KM是怎么实现的了: 一言以蔽之, clientid+topic组成一个单独的clientId
当你需要对Topic限流的时候 就需要做如下操作了;
研发/运维选中Topic点击申请配额

运维人员审核 申请配额的申请

- 审核通过, 限流信息已经写入到Zookeeper中;
针对Topic粒度的配额如何生效的
我们来简单看看KafakaManager申请配额的代码


从代码中我们可以看到, 我们写入到 zk中的配额clients节点路径是 apppId.TopicName; 想要让配额生效, 那么我们在生产和消费Topic的时候, clientId 需要设置为apppId.TopicName的格式; 一个topic单独分配一个clientId; 这样看起来想要使用这个功能是不是还挺麻烦;但是滴滴的 kafka-gateway 帮我们实现了这个功能;
kafka-gateway: 这个是滴滴内部针对社区版kafka做了一些扩展,增强; 比如这个功能,kafka-gateway就帮我们自动解决了,不需要那么麻烦
当然我们也可以不用kafka-gateway,在每个Topic生产/消费那里根据上门的规则单独设置clientId
测试kafka限流是否成功
我们将Topic Test2的生产限流设置为0.000001

然后写一段发送消息的代码, 设置client.id = apppId.TopicName的格式; 然后不停的发送
@Test
void contextLoads() {
Properties props = new Properties();
props.put(“bootstrap.servers”, “xxxxx”);
props.put(“acks”, “all”);
props.put(“retries”, 0);
props.put(“batch.size”, 16384);
props.put(“linger.ms”, 1);
props.put(“buffer.memory”, 33554432);
props.put(“client.id”, “appId_000001_cn.Test2”);
props.put(“key.serializer”, “org.apache.kafka.common.serialization.StringSerializer”);
props.put(“value.serializer”, “org.apache.kafka.common.serialization.StringSerializer”);
Producer<String, String> producer = new KafkaProducer<>(props);
for(int i = 0; i < 50000000; i++){
producer.send(new ProducerRecord<String, String>(“Test2”, Integer.toString(i), Integer.toString(i)));
}
producer.close();
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
记这一点。**
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍
[外链图片转存中…(img-BGwjEanl-1713459249165)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
更多推荐


所有评论(0)