美文网首页
kafka高性能io的秘密

kafka高性能io的秘密

作者: 谁没有做过白日梦呢 | 来源:发表于2020-07-08 19:43 被阅读0次

之前在项目中用到了kafka做消息传递,一直听说过kafka的性能非常高,这里总结下kafka为了实现高性能io的做了哪些设计用了什么方式。以对自己今后进行高性能服务设计作参考。

1.批量消息处理

kafka服务端在处理消息的时候,并不是生产者发送一条消息它处理一条,而是先攒一批消息然后一并进行处理,而且在之后的消息刷盘和发送给消费者,消息都是以一批的形式进行处理。这样的好处就是可以明显降低请求数,缓解broker的压力,提高处理效率,但是也存在消息发送不及时的缺点,即这种方式适用于对实时性要求不是特别高的系统

2.顺序磁盘io

众所周知磁盘io涉及到磁盘机械臂的机械运动,性能本身就不算特别高,如果还是随机磁盘io操作的话,性能就会大大降低,但是为了持久化消息以保证消息不丢失,又必须将消息写入磁盘,所以这里kafka在往磁盘上写消息时都是顺序写,一个文件写满了再开启一个新的文件继续写,这样顺序io就避免了随机io需要先寻址再进行读写导致的性能低下,消费的时候读消息也是从某个位置开始顺序读出来。

3.利用PageCache缓存

上面提到了磁盘io的性能很低,而才内存中进行读写则非常快,而kafka就利用了操作系统中的PageCache技术来利用内存加速消息的读写。PageCache是大部分操作系统都有的特性,即我们在平时程序中对磁盘里的文件进行读写时,并不是直接对磁盘进行操作,操作系统会将文件的一部分拷贝到内存中,我们则是对内存中的缓存进行读写,然后PageCache再一批一批将内存中的修改写入磁盘。

而在PageCache中进行读写有两种情况,一种是PageCache中有数据,则可以直接进行读写,第二种是没有数据,则此时会发生一次缺页中断,操作系统会进行一次磁盘io将文件内容读到PageCache中,一般来说应用程序用过的PageCache不会立刻被操作系统清理,而是会使用LRU算法后续慢慢清理。而kafka由于一般刚写入的消息基本上会立刻被消费,所以PageCache的命中率非常高,非常好的利用到了PageCache的特性。

4.零拷贝技术

一般来说一条消息从文件读出来发送到消费者是这样一个流程:

a.读取文件中的消息到内存

b.将内存中的消息发送到网络端

而在这个过程中2-3次数据拷贝,比如从文件读到PageCache中(如果命中PageCache则不用这步操作),从PageCache拷贝到应用程序内存空间,从内存空间拷贝到socket缓冲区,而kakfa利用系统中的一个系统调用,直接将消息从PageCache拷贝到socket中,减少一次数据拷贝,而且这种方式不用拷贝到应用程序的内存空间,dma控制器可以直接完成数据复制,速度更快

相关文章

  • kafka高性能io的秘密

    之前在项目中用到了kafka做消息传递,一直听说过kafka的性能非常高,这里总结下kafka为了实现高性能io的...

  • 08-Kafka如何实现高性能IO?

    Kafka如何实现高性能IO? 一、使用批量消息提升服务端处理能力 虽然kafka的sdk提供了单条消息发送,但实...

  • 阿里java面经

    数据库隔离级别及解决哪几个问题 分布式理论 cap 讲讲 zookerper搭建数量 kafka 高性能IO ka...

  • Kafka - 存储和索引

    Kafka文件存储机制那些事 kafka分区、分段、稀疏索引实现高性能查询 kafka log文件格式

  • 【kafka】Kafka 可视化工具

    kafka监控工具kafka eaglehttps://chenjinglys.gitee.io/2019/12/...

  • 高性能IO模型(摘选)

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Bloc...

  • IO多路复用机制详解

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Bloc...

  • Netty教程-IO多路复用机制详解

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Bloc...

  • 高性能IO IO模型

    高性能IO 第一次分享 声明:本文用于内部分享使用,图文多来源于网络 总述 IO(Input/Output)在计算...

  • Kafka “高性能” mirc-batch

    前言 最开始在Kafka 概述中提到了mirc-batch(微批处理),mirc-batch是Kafka 高性能的...

网友评论

      本文标题:kafka高性能io的秘密

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