首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
看简介
华为_2012实验室_Java工程师
关注
已关注
取消关注
欢迎评论区提问交流~
@看简介:
图解Kafka Producer常用性能优化配置
1 基本参数bootstrap.servers:Kafka broker服务器地址列表,,分开,可不必写全,Kafka内部有自动感知Kafka broker的机制client.dns.lookup:客户端寻找bootstrap地址的方式,支持两种方式:resolve_canonical_bootstrap_servers_only:依据bootstrap.servers提供的主机名(hostname),根据主机上的名称服务返回其IP地址的数组(InetAddress.getAllByName),然后依次获取inetAddress.getCanonicalHostName(),再建立tcp连接。一个主机可配置多个网卡,如果启用该功能,应该可以有效利用多网卡的优势,降低Broker的网络端负载压力。use_all_dns_ips:直接使用bootstrap.servers中提供的hostname、port创建tcp连接,默认选项。compression.type:消息压缩算法,可选值:none、gzip、snappy、lz4、zstd,默认不压缩,建议与Kafka服务器配置的一样,当然Kafka服务端可配置的压缩类型为 producer,即采用与发送方配置的压缩类型。发送方与Broker 服务器采用相同的压缩类型,可有效避免在Broker服务端进行消息的压缩与解压缩,大大降低Broker的CPU使用压力。client.id:客户端ID,如果不设置默认为producer-递增,强烈建议设置该值,尽量包含ip,port,pidsend.buffer.bytes:网络通道(TCP)的发送缓存区大小,默认128Kreceive.buffer.bytes:网络通道(TCP)的接收缓存区大小,默认32Kreconnect.backoff.ms:重新建立链接的等待时长,默认50ms,属于底层网络参数,基本不关注reconnect.backoff.max.ms:重建链接的最大等待时长,默认1s,连续两次对同一个连接建立重连,等待时间会在reconnect.backoff.ms的初始值上成指数级递增,但超过max后,将不再指数级递增key.serializer:消息key的序列化策略,org.apache.kafka.common.serialization接口实现类,注意别导错包了value.serializer:消息体序列化策略partitioner.class:消息发送队列负载算法,默认 DefaultPartitioner,路由算法如下:如指定 key ,则使用 key 的 hashcode 与分区数取模如未指定 key,则轮询所有分区interceptor.classes:拦截器列表,kafka运行在消息真正发送到broker之前对消息进行拦截加工enable.idempotence:是否开启发送端的幂等,默认falsetransaction.timeout.ms:事务协调器等待客户端的事务状态反馈的最大超时时间,默认60stransactional.id:事务id,用于在一个事务中唯一标识一个客户端2 性能优化常配参数涉及到消息发送是如何工作的,本节首先将罗列参数,做简单说明,然后再给出运作图,进一步阐述其工作机制。buffer.memory用于设置一个生产者(KafkaProducer)中缓存池的内存大小,默认为32M。max.block.ms当消息发送者申请空闲内存时,如果可用内存不足的等待时长,默认为60s,如果在指定时间内未申请到内存,消息发送端会直接报TimeoutException,这个时间包含了发送端用于查找元信息的时间。retries重试次数,Kafka Sender线程从缓存区尝试发送到Broker端的重试次数,默认为Integer.MAX_VALUE,为了避免无限重试,只针对可恢复的异常,例如Leader选举中这种异常就是可恢复的,重试最终是能解决问题的。acks用来定义消息“已提交”的条件(标准),就是 Broker 端向客户端承偌已提交的条件,可选值如下:0表示生产者不关心该条消息在 broker 端的处理结果,只要调用 KafkaProducer 的 send 方法返回后即认为成功,显然这种方式是最不安全的,因为 Broker 端可能压根都没有收到该条消息或存储失败。all 或 -1表示消息不仅需要 Leader 节点已存储该消息,并且要求其副本(准确的来说是 ISR 中的节点)全部存储才认为已提交,才向客户端返回提交成功。这是最严格的持久化保障,当然性能也最低。1表示消息只需要写入 Leader 节点后就可以向客户端返回提交成功。batch.size在消息发送端Kafka引入了批的概念,发送到服务端的消息通常不是一条一条发送,而是一批一批发送,该值用于设置每一个批次的内存大小,一个批次对应源码层级为ProducerBatch对象,默认为16K。linger.ms该参数与batch.size配合使用。Kafka希望一个批次一个批次去发送到Broker,应用程序往KafkaProducer中发送一条消息,首先会进入到内部缓冲区,具体是会进入到某一个批次中(ProducerBatch),等待该批次堆满后一次发送到Broker,这样能提高消息的吞吐量,但其消息发送的延迟也会相应提高,试想一下,如果在某一个时间端,应用端发送到broker的消息太少,不足以填满一个批次,那岂不是消息一直无法发送到Broker端吗?为了解决该问题,linger.ms参数应运而生。它的作用是控制在缓存区中未积满时来控制消息发送线程的行为。如果linger.ms 设置为 0表示立即发送,如果设置为大于0,则消息发送线程会等待这个值后才会向broker发送。有点类似于 TCP 领域的 Nagle 算法。delivery.timeout.ms消息在客户端缓存中的过期时间,在Kafka的消息发送模型中,消息先进入到消息发送端的双端缓存队列中,然后单独一个线程将缓存区中的消息发送到Broker,该参数控制在双端队列中的过期时间,默认为120s,从进入双端队列开始计时,超过该值后会返回超时异常(TimeoutException)。request.timeout.ms请求的超时时间,主要是Kafka消息发送线程(Sender)与Broker端的网络通讯的请求超时时间。max.request.sizeSend线程一次发送的最大字节数量,也就是Send线程向服务端一次消息发送请求的最大传输数据,默认为1M。max.in.flight.requests.per.connection设置每一个客户端与服务端连接,在应用层一个通道的积压消息数量,默认为5,有点类似Netty用高低水位线控制发送缓冲区中积压的多少,避免内存溢出。4 图解参数的作用时机到底如何指导实际业务的性能优化参数,该调哪些参数?咱们下篇文章再叙。文章转载自公众号:【JavaEdge】参考:编程严选网
点赞 0
评论 0
全部评论
推荐
最新
楼层
还没有回复哦~
相关推荐
昨天 12:08
中国矿业大学 前端工程师
小红书 前端日常实习一面
1.自我介绍2.学习前端的历程3.项目4.图片懒加载对用户来说,具体的体验提升在哪里5.常见的请求头6.cookie在请求中的具体形式7.协商缓存和强缓存8.为什么返回3049.反问
查看9道真题和解析
点赞
评论
收藏
分享
02-18 11:13
成都信息工程大学 前端工程师
小厂面经 我太菜了这都不会
自我介绍,我介绍了我简历上的两个项目(简历可以看我前几篇文章评论区) 我专业是软工,面试官问为什么选择前端,答兴趣爱好 认为前端是干什么的,答是用户和后端沟通的桥梁之类的 这两个项目是个人项目还是团队项目 小程序项目有没有做适配,比如苹果顶部刘海之类的,答只做了顶部,没做底部 小程序怎样去获取页面栈数量的,答用uniapp的api 小程序调用用户地址接口需不需要授权,答需要进行配置才能调用接口 追问这个调用地址的接口是获取用户地址还是微信保存的地址信息,答保存的地址信息 做支付的时候需要注意的点,答了一个项目中设计的不好的地方 用户不扫码,或者扫码不支付怎么处理,答可以在订单列表页重新打开支付...
我的失利项目复盘
面试中的破防瞬间
点赞
评论
收藏
分享
01-30 14:23
浙江工业大学 Java
求内推 没工作了我😭
神哥了不得:
你简历字体有点不太协调呀,下面的字实在太小了呀,而且项目也不太行,建议换几个高质量的项目,面试会多很多
点赞
评论
收藏
分享
01-15 13:52
已编辑
河南大学 Java
时隔半月才回,也是硬气上了
六年要多久:
标准头像,不吃香菜😂
点赞
评论
收藏
分享
昨天 12:51
华为_硬件技术工程师(准入职员工)
26届实习攻略,附时间线,可供参考
写在前面:如果你是26届学生(本科和硕士研究生可参考),且以就业为导向(私企为主,国央企不包含),那么本篇文章可以供你参考,更适用于工科类。时间飞快,转眼就要三月份了,又到了“金三银四”的暑期实习招聘阶段。作为过来人,回想自己去年上半年找实习那段时光,非常理解有的同学焦虑的心情,所以把自己的一些经验写成这篇帖子,以供一些同学参考,希望能有所帮助。先简单说说个人情况,本人是24年3月份决定就业的,之前有过电赛经历,算是有一定的硬件基础,所以选择找硬件方向的实习岗位,最终在24年6月份收到了华为的硬件实习offer,24年7月到9月在西安华为实习,随后参加秋招,在24年12月签约了华为。时间线见下...
牛客创作赏金赛
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
脱下孔乙己长衫,浅聊一下就业下沉!
3.7W
2
...
美团java后端日常实习一二面
1.2W
3
...
腾讯PCG QQ后台开发一面
7975
4
...
腾讯/字节/快手 前端面经汇总
7225
5
...
实习入职第一天,应该做点啥❓
7032
6
...
腾讯hr部门有约三面的吗
6950
7
...
【有奖互动】你问过DeepSeek什么意想不到的问题?
6887
8
...
25届投递记录-水滴篇
5121
9
...
大胆解读下任老的发言:我们大学生有哪些可以关注的❓
4255
10
...
算法简直是神仙打架
3881
创作者周榜
更多
正在热议
更多
#
听劝,这个简历怎么改
#
15212次浏览
196人参与
#
你见过最离谱的招聘要求是什么?
#
145133次浏览
836人参与
#
水滴春招
#
32036次浏览
560人参与
#
入职第四天,心情怎么样
#
11867次浏览
68人参与
#
面试被问“你的缺点是什么?”怎么答
#
8477次浏览
131人参与
#
参加完秋招的机械人,还参加春招吗?
#
27375次浏览
278人参与
#
如果你有一天可以担任公司的CEO,你会做哪三件事?
#
20609次浏览
414人参与
#
租房找室友
#
8231次浏览
53人参与
#
分享一个让你热爱工作的瞬间
#
15944次浏览
167人参与
#
职场新人生存指南
#
200016次浏览
5534人参与
#
地方国企笔面经互助
#
18066次浏览
26人参与
#
读研or工作,哪个性价比更高?
#
26345次浏览
356人参与
#
简历无回复,你会继续海投还是优化再投?
#
48847次浏览
561人参与
#
第一份工作应该选高薪还是热爱?
#
3474次浏览
68人参与
#
文科生还参加今年的春招吗
#
4245次浏览
31人参与
#
如果重来一次你还会读研吗
#
156447次浏览
1710人参与
#
你们的毕业论文什么进度了
#
902930次浏览
8978人参与
#
机械人选offer,最看重什么?
#
69108次浏览
449人参与
#
如何拒绝/反向PUA
#
59079次浏览
344人参与
#
选择和努力,哪个更重要?
#
44732次浏览
498人参与
#
如果再来一次,你还会学硬件吗
#
103836次浏览
1246人参与
牛客网
牛客企业服务