kafka高性能的底层原理分析

目录

1.磁盘顺序写

2.零拷贝

3.数据压缩

4.消息批量处理

5.pageCache

6.稀疏索引

总结


Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。那么他是如何做到高性能的呢,本篇文章从宏观上分析一下,具体细节后续文章会持续更新,欢迎大家捧场阅读,希望能对你有所帮助。

1.磁盘顺序写

我们都知道,磁盘的随机IO非常慢, 7200rpm SATA RAID-5 顺序写速度可达 600MB/sec ,但是随机写速率 100k/sec,相差6000倍,kafka消息写入采用了顺序写。

2.零拷贝

传统的数据传输,需要经历用户态和内核态的4次切换,4次数据copy,如图

        零拷贝,带有 DMA 收集拷贝功能的 sendfile 实现的 I/O使用了2次用户空间与内核空间的上下文切换,2次数据的拷贝,而且这2次的数据拷贝都是非CPU拷贝,这样就实现了最理想的零拷贝I/O传输了,不需要任何一次的CPU拷贝即数据直接从内核缓冲区 copy 到网卡。如下图

3.数据压缩

     支持压缩算法,如Gzip,Snappy,Lz4,Zstd。

     压缩流程:Producer 压缩,broker 保持,consumer解压缩

4.消息批量处理

     producer发送消息给broker,消息在producer端等待达到batch.size (默认值16k)时,才会发       送至broker端,减少网络IO,提升效率 

5.pageCache

        数据写入和读取时,调用了linux底层的sendfile机制,pageCache 页缓存通常是4k,用于提            高文件的读写效率的缓存页。

6.稀疏索引

        日志文件类型:.log文件,index.log,timeIndex.log

        索引文件目的是在高效查找分区内的位置,通过二分查找算法实现

总结

        以上是从整体上总结了kafka支持高性能的6点原因,我们先从宏观上有个清晰的认知

具体每个原因的具体内部技术细节,后期会慢慢给大家分析

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值