顺序读写
kafka的读取读写磁盘是采用顺序读写的模式,这比随机读写效率高很多
分区分段
一个topic的结构是partition,然后partition又分为多个segment,每次操作都是对一个小文件segment进行操作,非常轻便
利用页存储
通过页表存储可以实现更加快速的寻址
零拷贝
所谓零拷贝就是将数据直接从磁盘文件复制到网卡设备中,而不需要经过应用程序之手。
正常的文件读取是:
a. 用户调用read() 将文件复制到内核模式的read buffer中
b. CPU控制将内核模式数据复制到用户模式下
c. 调用write() 将用户模式下的内容复制到内核模式的socket buffer中
d. 将内核模式下的socket buffer 的数据复制到网卡设备中传送
零拷贝:
a. 通过DMA(direct memory access)技术奖文件内容复制到内核模式下的read buffer
b. DMA引擎直接将数据从内核模式传递到网卡设备
数据压缩
kafka数据传输支持gz等数据压缩方式
批量发送
kafka支持将数据存放到内存中,然后达到设定的记录数或者指定的时间间隔的时候批量将数据推送到服务端