【Kafka】Logi-KafkaManger 针对Topic粒度的配额管理
申请配额(限流)
默认创建完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();
}
检查是否发生限流 然后发现生产消息就被限流了;
这里的申请配额通过之后,实际上是去zk上更新了配置输入; 比如我申请配额为1M/s = 1024*1024=1048576kb
可以看到zk上的配置更新了
kafka-gatway 是滴滴内部未开源的kafka引擎,目前看来没有开源的打算,现在是作为企业服务,大概了解了下 新增的功能还是挺多的,配合Logi-KafkaManager使用效果比较好
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanejbh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01