当前位置: 首页 > news >正文

kafka吞吐量提升总结

前言

原本自以为阅读了很久kafka的源码,对于kafka的了解已经深入到一定程度了,后面在某大厂的面试中,面试官询问我,如果需要提升kafka的性能,应该怎么做,我发现我能答上来的点非常的少,也暴露了我在学习时候缺少总结,导致要用的时候很难一次性快速表达出来,也让我错过了一个大厂的offer,尽管我在面试之后迅速做了相关问题总结,而且已经过去了半年,但是我还是会时不时想起这件事,所以想专门写一篇kafka性能提升的总结文章来超度那件事,让它不要再纠缠与我了,

一 生产者

1.1 配置优化

1 增加每个分区的消息批的大小( batch.size: 16k),适当增加批的最大缓存时间( linger.ms)让生产者累积器中的每个Sender可以累积更多的消息再发送,减少网络请求次数,同时也能增加broker硬盘IO的存储效率(每次顺序写入的多)

2 增加生产者中累积器的内存缓冲区(buffer.memory: 32M)大小,当累积器的缓冲区用完时,也会吧消息发送给broker,通过增加增加生产者中累积器,也可以减少网络请求次数

4 压缩消息(compression.type:none-默认不压缩),可以选择 gzip、snappy、lz4、zstd 等。减少网络传输的数据量,但是会增加cpu负担,可以在网络流量和cpu之间找到一个平衡点

5 在必要条件时,可以吧ack设置为0,但是会使得丢消息的概率提高

1.2 代码优化

1 多线程生产,多个线程使用多个生产者并行生产消息

2 异步生产,生产者发送消息本身涉及网络IO,而且除了异常处理外我们不太需要关注返回结果,所以可以通过线程池等异步生产消息,避免堵塞主线程,提升系统整体性能

3 批量生产和压缩:尽管kafka生产者本身已经通过批量生产做了性能优化,但是这个并不妨碍我们在必要的时候自行积累数据批量发送(甚至手动压缩)来减少网络IO,提升整体吞吐量,毕竟kafka的批量生产和压缩都是通用的算法,有时候我们可能根据业务数据的特点使用更加高效的批量生产和压缩

二 消费者

2.1 配置优化

1 调整每次拉取消息的量(fetch.min.bytes和fetch.max.bytes)减少网络IO

2.2 代码优化

1 并行处理,消费者内部使用多线程处理消息。

2.3 部署优化

1 通过分区和消费者的关系,可以知道如果分区数和消费者数相同时候,可以充分利用并行处理能力

三 broker

3.1 配置优化

1 节点配置的优化,比如IO线程数(handler的数量:num.io.threads),网络线程数(Processor的数量:num.network.threads),还有套接字缓冲区的大小(socket.send.buffer.bytes/socket.receive.buffer.bytes)

3 对kafka的jvm进行调优,比如内存和 GC方面优化

5 优化分区副本的放置,确保高可用的同时,避免跨数据中心的复制延迟

3.2 部署优化

1 适当增加topic的分区数,充分运用到多个broker资源和broker内部的并行处理能力,但需注意过多的分区可能导致的问题。

2 使用固态硬盘等增加硬盘性能,优化文件存储目录的布局以减少 I/O 竞争,如果有多个硬盘,尽量让日志文件分布在多个硬盘上

3 采用 LogDir 多个目录分散写入负载。

相关文章:

  • ATGM332D-F8N22单北斗多频定位导航模块
  • 自动生成md文件以及config.mjs文件-vitepress
  • Docker部署Zookeeper集群
  • 技术服务业-首套运营商网络路由5G SA测试专网搭建完成并对外提供服务
  • 分布式缓存:缓存的三种读写模式及分类
  • Flume的大概简单介绍
  • AGV(自动导引车)通信协议及通信链路性能需求分析
  • 移远三款主流5G模块RM500U,RM520N,RG200U比较
  • RK3588 Opencv-ffmpeg-rkmpp-rkrga编译与测试
  • EasyRTC音视频实时通话WebP2P技术赋能的全场景实时通信解决方案
  • 力扣-最大连续一的个数
  • 力扣-将x减到0的最小操作数
  • 【时时三省】(C语言基础)对被调用函数的声明和函数原型
  • [特殊字符] GUNION SDK 接口调用方式说明(静态库 vs 动态库)
  • C/C++的OpenCV 进行图像梯度提取
  • 并发容器(Collections)
  • bi软件是什么?bi软件是做什么用的?
  • 量化研究---bigquant策略交易api研究
  • 30个性能优化方案
  • Python在自动驾驶中的多传感器融合——让智能汽车“看得更清楚”
  • wordpress 远程/优化公司组织架构
  • 做网站开发学什么语言/长春网络优化哪个公司在做
  • 浪琴女士手表网站/制作网站的最大公司
  • 免费建站建站/天津百度推广开户
  • 沧州好的做网站的公司/企业网站优化工具
  • 做纺织生意用什么网站好/建站工具