kafka数据 落盘_终于知道Kafka为什么这么快了!

本文深入探讨了Kafka为何具有高吞吐量,主要原因是利用Partition实现并行处理,顺序写磁盘以优化磁盘I/O,以及利用Page Cache和零拷贝技术减少数据传输的开销。Kafka通过追加写入、Segment分段和避免随机写入来提高性能,并采用Sendfile系统调用实现网络传输的零拷贝,进一步提升了效率。
摘要由CSDN通过智能技术生成

无论 Kafka 作为 MQ 也好,还是作为存储层也罢,无非就是两个功能,一是 Producer 生产的数据存到 Broker,二是 Consumer 从 Broker 读取数据。

图片来自 Pexels

那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快的原因。

利用 Partition 实现并行处理

我们都知道 Kafka 是一个 Pub-Sub 的消息系统,无论是发布还是订阅,都要指定 Topic。

Topic 只是一个逻辑的概念。每个 Topic 都包含一个或多个 Partition,不同 Partition 可位于不同节点。

一方面,由于不同 Partition 可位于不同机器,因此可以充分利用集群优势,实现机器间的并行处理。

另一方面,由于 Partition 在物理上对应一个文件夹,即使多个 Partition 位于同一个节点,也可通过配置让同一节点上的不同 Partition 置于不同的磁盘上,从而实现磁盘间的并行处理,充分发挥多磁盘的优势。

能并行处理,速度肯定会有提升,多个工人肯定比一个工人干的快。可以并行写入不同的磁盘?那磁盘读写的速度可以控制吗?那就先简单扯扯磁盘 I/O 的那些事。

硬盘性能的制约因素是什么?如何根据磁盘 I/O 特性来进行系统设计?

硬盘内部主要部件为磁盘盘片、传动手臂、读写磁头和主轴马达。实际数据都是写在盘片上,读写主要是通过传动手臂上的读写磁头来完成。

实际运行时,主轴让磁盘盘片转动,然后传动手臂可伸展让读取头在盘片上进行读写操作。

磁盘物理结构如下图所示:

由于单一盘片容量有限,一般硬盘都有两张以上的盘片,每个盘片有两面,都可记录信息,所以一张盘片对应着两个磁头。

盘片被分为许多扇形的区域,每个区域叫一个扇区。盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道,不同盘片相同半径的磁道所组成的圆柱称为柱面。

磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用。

磁盘盘片垂直视角如下图所示:

影响磁盘的关键因素是磁盘服务时间,即磁盘完成一个 I/O 请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成。

机械硬盘的连续读写性能很好,但随机读写性能很差,这主要是因为磁头移动到正确的磁道上需要时间,随机读写时,磁头需要不停的移动,时间都浪费在了磁头寻址上,所以性能不高。衡量磁盘的重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值