kafka的高性能机制

本文深入探讨了Kafka的高性能特性,包括磁盘顺序写入以提高写速度,零拷贝机制加速数据传输,数据文件分段保存降低竞争,稀疏索引与二分查找提升查找效率,以及高并发网络设计确保高QPS。此外,还介绍了多副本策略以保证服务高可用。
摘要由CSDN通过智能技术生成

一、磁盘写数据顺序写
 kafka往磁盘写数据时会先将数据写入操作系统内存(os cache),达到一定的条件后再顺序写入磁盘,顺序写入磁盘其实就是追加,在上一条数据的物理地址后写入数据,节省了大量的寻址时间。根据kafka官网的说法,6个7200转的磁盘组成raid5,顺序写的速度能达到(600MB/S),保证了写数据的高效。
二、零拷贝机制
 消费者消费数据时会先从os cache中找有没有需要的数据,没有将磁盘的数据读取到os cache后直接通过网络发送给消费者所在的服务器,没有将数据拷贝进kafka的进程中后再通过socket发送数据,节省了时间和空间,提高了读取数据的高效。
三、数据文件分段保存
 kafka的数据在对应partition目录下保存成多个log文件,减少单个文件的大小,customer消费时可以避免一些读取同个文件的竞争,整体提高了一些读写性能。
四、稀疏索引和二分查找定位数据
 kafka消费数据时经常存在指定offset消费的情况,比如消费程序停了重新启动后需要继续上次offset位置进行消费。kafka的文件保存时数据保存成0000XXX.log(数据文件),0000xxx.index(索引文件)。在index文件中并不是每条数据都有保存一个索引,而是log文件每保存一定的数据量生成一条索引信息保存形成稀疏索引节省空间,索引由一条数据的offset和物理位置组成,在指定offset消费时,会去index中寻找和小于指定的offset的最后一条索引,根据物理位置往后继续寻找需要消费的数据。因为kafka是顺序写入所以这样查找数据大大的节省了时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值