kafka高性能之-顺序读写

本文探讨了Kafka如何通过磁盘顺序读写提升IO性能,详细解释了顺序读写优于随机读写的原因,涉及机械硬盘和固态硬盘的工作原理。Kafka将消息追加到分区文件末尾,利用此特性实现高吞吐量写入。同时,文章提到了Kafka的数据保留策略,包括基于时间和文件大小的删除策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Kafka是将消息记录持久化到本地磁盘中的来确保kafka能对海量数据进行处理,通常来看磁盘读写性能差,但是kafka确通过磁盘顺序读写来提升整体的IO性能。

顺序读写性能对照表:

这里明显能看出,顺序读写不论是内存还是磁盘都要远远高于随机读写。

那么问题来了为什么顺序读写的性能要高于随机读写,这里抛开linux内核对顺序读写的优化,单从磁盘(机械硬盘和固态硬盘)原理来看顺序读写带来的性能提升,

机械硬盘:

机械硬盘的结构一个唱片机,它有一个旋转的盘片和一个能沿半径方向移动的磁头。处理读取和写入请求时,首先可以根据请求的开始地址算出要处理的数据在磁盘上的位置,之后要进行以下几步工作:

1、磁头沿半径方向移动,直至移动到数据所在的柱面(相同半径的磁道组成的环面)

2、盘片高速旋转,使磁头到达数据的起始位置

3、磁头沿磁道从磁盘读取或写入数据

当一次读取的数据量很少的时候,1、2步骤带来的开销是无法忽略的,这使得随机写相对于顺序写会有巨大的性能劣势。因为在顺序写的时候,1、2步骤只需要执行一次,剩下的全是数据传输所需要的固有开销;而每次随机写的时候,前两个步骤都需要执行,带来了极大的额外开销。

固态硬盘:

从理论上来看,固态硬盘不应该存在明显的随机写与顺序写的速度差异,因为它就是一块支持随机寻址的存储芯片,没有寻道和旋转盘片的开销,但是随机写实际上还是比顺序写要慢。这是由于其存储介质闪存的一些特性导致的,简单来说:

1、闪存不支持in-place update:你更新一个数据,不可以直接在原有数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值