我是靠谱客的博主 精明钢笔,最近开发中收集的这篇文章主要介绍Kafka高性能高吞吐的原因/为什么这么快?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Kafka高性能高吞吐的原因/为什么这么快?

  • 磁盘顺序读写

    • 传统的磁盘读写是随机读写,导致数据是分散开的,不在一起,不仅将预读浪费掉了,还需要进行多次的寻道和旋转延迟,从而浪费过多的时间。

    • 而Kafka采取的是顺序读写,磁盘会预读,预读就是从读取的起始地址连续读取多个页面,时间主要都花费在了传输上,从而使得磁盘的处理效率更接近于内存。

    • 比起内存,使用磁盘的好处更体现在容量上,从而保证消息的堆积

  • 零拷贝

    • 传统的数据赋值是:
      • 先将磁盘文件中的数据先读取到内核缓冲区,
      • 再拷贝到用户缓冲区,
      • 再将用户缓冲区的数据拷贝到socket的发送缓冲区,
      • 然后再发送到网卡进行传输;
    • 零拷贝:
      • 直接从磁盘文件中读取到内核缓冲区,再由内核缓冲区直接给到网卡,再返回给消费者进程,从而避免了传统数据复制过程中CPU将数据在内核缓冲区和用户缓冲区的拷贝流程
  • 分区分段加索引

    • partition由多个大小相等的segment file组成,每次进行的文件操作也是直接操作的segment file。为了进一步查询优化,Kafka默认为分段后的数据文件建立了以.index结尾的索引文件。这种分区分段+索引的设计不仅提升了数据读取的效率,同时也提高了数据操作的并行度(类似于分段锁)。
  • 批量压缩,批量读写

    • 多条消息一起压缩,从而降低带宽。
  • 直接操作page cache(页高速缓冲存储器),而不是JVM,避免了对象的创建和GC耗时,因此读写效率更高

最后

以上就是精明钢笔为你收集整理的Kafka高性能高吞吐的原因/为什么这么快?的全部内容,希望文章能够帮你解决Kafka高性能高吞吐的原因/为什么这么快?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部