首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
还没有回复哦~
相关推荐
02-19 13:07
英特尔_Software_engineer
嵌入式实战场景题目(一)
此部分不只包含面经内容,均是实战类型不必全文背诵,有思路即可后续收录于专栏:嵌入式最强面经1.我们通常所说的波特率9600bps,这个bps的意思是?简答:波特率(baud rate)是衡量数据传输速率的单位,通常以每秒传输的比特数来表示。在串行通信中,发送端和接收端必须保持相同的波特率设置,以确保正确传输数据。如果发送端和接收端使用不同的波特率设置,那么数据传输会出现问题。如果发送端使用9600 bps的波特率,而接收端使用不同的波特率,例如4800 bps,那么接收端可能无法正确解析发送端发送的数据。这会导致数据传输错误、乱码和通信障碍。2.SPI IIC UART那个属于异步通信 那个属...
c++/嵌入式面经专栏
牛客激励计划
牛客创作赏金赛
点赞
评论
收藏
分享
02-18 17:50
华为_HR
JAVA面经分享--华为OD
背景:24届 南昌大学 软件工程专业。面试的部门是杭州--华为云部门,目前已经入职!上份工作是在广州从事的java开发工作,因为有朋友在杭州,所以离职打算去杭州发展。经朋友介绍OD,觉得挺不错,所以在牛客网上找到香云投递了简历。一:机考:12.23机考是考的E卷, 整体难度和leetcode mid差不多, 按照HR姐姐给的攻略, 刷了7天题,机考得分275箱子******摆放最长*******特殊*****算法题目基本都是香云发的题库里面原题二、性格测试:12.24查到机考成绩的第二天, 就安排综测了,按照HR给的攻略很顺利就通过了。三、资格面试:12.26性格测试做完的第二天,香云让提供...
查看18道真题和解析
点赞
评论
收藏
分享
02-19 19:57
门头沟学院 Java
想买台mac 一直纠结
投票
兄弟们选哪台呀
点赞
评论
收藏
分享
01-14 14:32
北京理工大学 运营
可以让大家帮忙看一下简历吗?被大厂拒麻了,到底适合投什么呢?感谢🙏
冰皮月饼_FLORRIEEE:
你是准备投产品嘛?可以重新整理一下实习的bulletpoint,侧重描述你的工作所带来的结果收益,不要只写泛泛的内容(比如改写通过xx数据分析,提升xx),产品的价值并不在处理和分析数据的过程
点赞
评论
收藏
分享
02-19 17:33
门头沟学院 活动运营
实习太"水"怎么办?3招教你榨干每一滴经验值
很多同学在实习后会产生"好像什么都没学到"的焦虑。作为带过实习生的mentor,今天教你如何把看似"注水"的经历变成求职加分项!第一招:重新定义"水经历"✅ 观察价值:记录部门业务流程(如活动策划SOP/用户增长模型)✅ 工具价值:整理你接触过的后台系统(如CRM/数据看板/推送平台)✅ 信息价值:总结行业黑话(如私域流量池搭建=社群+企微+小程序组合)真实案例:某实习生通过整理部门使用的5大运营工具对比表,在秋招面试中展示出极强的信息整合能力第二招:STAR法则改造简历把"日常打杂"升级为:◆ 独立完成100+商品详情页文案优化(S)◆ 建立跨部门协作模板(T)◆ 通过用户画像分析提出3个优...
牛客激励计划
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
脱下孔乙己长衫,浅聊一下就业下沉!
1.4W
2
...
腾讯PCG QQ后台开发一面
1.2W
3
...
HR面全百科——缺点/不足/有什么要改进的
9242
4
...
【未来准备7】就业下沉时代,如何摆脱困境
8637
5
...
任何人都可以复刻的AI修改简历思路
7164
6
...
实习生记住:你是去工作的,不是去受气的!
7055
7
...
【职场生存术6】寻求帮助是一项高级技能,得慢慢学
6463
8
...
快手产品运营一面😏凉了也赚了
6244
9
...
阿里云暑期实习java后端面经
6140
10
...
2/20 腾讯HR部门后端一面
5356
创作者周榜
更多
正在热议
更多
#
面试被问第一学历差时该怎么回答
#
97983次浏览
615人参与
#
你见过最离谱的招聘要求是什么?
#
152003次浏览
952人参与
#
水滴春招
#
37981次浏览
598人参与
#
你的房租占工资的比例是多少?
#
18106次浏览
223人参与
#
你想留在一线还是回老家?
#
17617次浏览
284人参与
#
听劝,这个简历怎么改
#
25138次浏览
324人参与
#
顺丰求职进展汇总
#
41886次浏览
252人参与
#
互联网行业现在还值得去吗
#
2697次浏览
23人参与
#
嵌入式岗知多少
#
24303次浏览
289人参与
#
2025,我想......
#
28498次浏览
309人参与
#
机械人的offer怎么选
#
119701次浏览
629人参与
#
大学最后一个寒假,我想……
#
18614次浏览
205人参与
#
面试被问“你的缺点是什么?”怎么答
#
15640次浏览
286人参与
#
第一份工作应该选高薪还是热爱?
#
11745次浏览
122人参与
#
机械人,你在招聘流程中的企业有哪些?
#
21791次浏览
205人参与
#
入职第四天,心情怎么样
#
13660次浏览
110人参与
#
招银网络科技工作体验
#
16046次浏览
81人参与
#
牛友投递互助,不漏校招机会
#
233139次浏览
3245人参与
#
0offer是寒冬太冷还是我太菜
#
1044629次浏览
8694人参与
#
租房找室友
#
8879次浏览
57人参与
#
大城市找工作会更容易吗
#
5799次浏览
31人参与
牛客网
牛客企业服务