一文理解Kafka如何做到高吞吐

本文详细探讨了Kafka实现高吞吐量的关键因素,包括有序写入、Page Cache利用、零拷贝技术、批量压缩和批量发送。通过这些机制,Kafka优化了磁盘I/O、内存使用和网络传输,确保高效的数据读写性能。
摘要由CSDN通过智能技术生成

Kafka高吞吐量的原因

kafka高效文件存储设计特点

  1. Kafka把topic中一个Parition大文件分成多个小文件segment,通过多个小文件segment,就容易定期清除或删除已经消费完的文件,减少磁盘占用。

  2. 为了进一步的查询优化,Kafka默认为分段后的数据文件建立了索引文件,就是文件系统上的.index文件。

  3. 索引文件通过稀疏存储,降低index文件元数据占用的空间大小。

 

每个Partition分为多个Segment,每个Segment有.log和.index两个文件。每个log文件记录具体的数据,每条消息都有一个递增的offset;Index文件是对log文件的索引。Consumer查找offset时使用的是二分法根据文件名去定位到Segment,然后解析msg,匹配到对应的offset的msg。

顺序写入

因为硬盘每次读写都会寻址和写入,其中寻址是一个耗时的操作。所以为了提高读写硬盘的速度,Kafka使用顺序I/O,来减少了寻址时间:收到消息后Kafka会把数据插入到文件末尾,每个消费者(Consumer)对每个Topic都有一个offset用来表示读取的进度。

因为顺序写入的特性,所以Kafka是无法删除数据的,它会将所有数据都保留下来。

P

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值