欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > kafka高性能的底层原理分析

kafka高性能的底层原理分析

2024/10/24 11:14:15 来源:https://blog.csdn.net/qq_28740207/article/details/140734768  浏览:    关键词: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点原因,我们先从宏观上有个清晰的认知

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com