美文网首页
Kafka为什么这么快?

Kafka为什么这么快?

作者: ssttIsme | 来源:发表于2023-05-01 15:14 被阅读0次

Kafka是号称能用普通的PC机也能处理超千万亿的消息吞吐量的实时信息流处理平台。Kafka之所以能够支持如此大的吞吐量而且还能够做到性能优秀的主要原因有四个:
1、磁盘顺序读写
2、稀疏索引
3、批量文件压缩
4、零拷贝机制

磁盘顺序读写

如果要读写数据,必须找到数据对应的扇区,这个过程叫寻址。
如果读写的多条数据在磁盘上是分散的,寻址会很耗时,这叫随机I/O。
如果读写的数据在磁盘上是集中的,不需要重复寻址的过程,这叫顺序I/O。
Kafka的消息时不断地追加到本地磁盘的末尾的而不是随机的写入,这就使得Kafka写入的吞吐量得到了显著的提升。如果我们在一定条件下进行测试的话,磁盘的顺序读写可以达到53.2M每秒比内存的随机读写还快。

稀疏索引

Kafka的索引并不是每一条消息都会建立索引,而是一种稀疏索引。Kafka在插入一批数据的时候才会产生一条索引记录,后续利用二分查找可以去找到对应的数据,这样的话可以大大提高检索效率。

批量文件压缩

Kafka默认是不会删除数据的,它会把所有的消息变成一个批量的文件,它会把多次插入相同的Key对应的Value合并成为最后一次插入的Value,这样的话就可以对消息进行合理的批量压缩,从而减少对网络IO的消耗。

零拷贝

操作系统的虚拟内存分为两部分,一部分叫内核空间,一部分叫用户空间。这样的话就可以避免用户进程直接去操作内核,从而保证内核的安全。正常情况下,如果用户从磁盘读取数据就必须把数据从磁盘拷贝到内核的缓冲区,然后再从内核的缓冲区拷贝到用户的缓冲区,最后才能去返回给用户。Linux系统里面提供了一个叫做sendfile的函数,它可以去实现零拷贝。它不需要经过用户的缓冲区就可以直接把数据发送到网卡,而Kafka的文件传输最终调用的是Java NIO里面的transferTo方法。实际上Java的transforTo方法最终调用的是Linux的sendfile()函数,所以就可以实现零拷贝。零拷贝技术可以大大提高文件传输的性能。

相关文章

  • 为什么Kafka这么快

    顺序IO 1.Kafka使用了顺序IO(Sequential IO),并极力避免随机磁盘访问(Random Dis...

  • Kafka为什么这么快?

    前言:讲解透彻,从存储到系统,硬件,网络细节综合考虑 问:讲讲kafka为什么这么快?答:kafka的快是从底层设...

  • Kafka为什么这么快?

    原文地址:https://www.jianshu.com/p/e0f23cb5b0e0 前言:讲解透彻,从存储到系...

  • 总结kafka为什么这么快

    顺序读写,传统7200转机械硬盘的读取速度可达到400m/s-500m/s,随机读写只有顺序读写的十分之一,所以顺...

  • Kafka 为什么快?

    前言 本文只想从作者本身的认识来谈谈 kafka 为什么会这么快?我们都知道 kafka 是基于磁盘的,但是他的存...

  • 聊聊 Kafka: Kafka 为啥这么快?

    欢迎大家关注我的公众号【 老周聊架构 】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能...

  • 无标题文章

    1、MySQL中binlog的实现原理 2、kafka为什么这么快 3、dubbo中的标签解析 4、spring的...

  • DMA: 为什么Kafka这么快 (48讲)

    SSD的IOPS可以达到2w、4w, 可CPU主频在2GHZ以上、每秒可以有2亿次操作, 若对于IO操作、都是由C...

  • 基于磁盘的Kafka为什么这么快

    作者: Wyman 大数据手稿笔记 Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管...

  • 面试官: Kafka 为什么这么快 ?

    有人说:他曾在一台配置较好的机子上对 Kafka 进行性能压测,压测结果是 Kafka 单个节点的极限处理能力接近...

网友评论

      本文标题:Kafka为什么这么快?

      本文链接:https://www.haomeiwen.com/subject/zumojdtx.html