Kafka的高吞吐率是怎么实现的

https://blog.csdn.net/jiayi_yao/article/details/124858036

1.ack=0;这个不算,一般不采用

2.磁盘顺序读写,达到内存读写的速度。先读后写。预读取磁盘内容到cache里,然后从cache里面读取。先写入cache里,后写入磁盘中。

3.0拷贝技术

原始是四次读写(即四次上下文切换)两次cpu拷贝,都非常浪费时间。两次DMA拷贝。

0拷贝技术两次读写(上下文切换)0次cpu拷贝。节省时间。两次DMA拷贝。

 

 

 

1. 硬件

在传统 I/O 中,硬件不仅仅是指硬盘,它指的是所有与 I/O 操作相关的物理设备,例如:
  • 硬盘:用于存储数据。
  • 键盘、鼠标:用于输入数据。
  • 显示器、打印机:用于输出数据。
  • 网络接口卡(NIC):用于网络通信。
  • USB 设备:用于外接存储或其他设备。
这些设备都可以通过 I/O 操作与计算机系统交互。

2. 内核缓冲区

内核缓冲区是操作系统内核分配的内存区域,用于暂存 I/O 数据。它的主要作用是:
  • 缓冲数据:当硬件设备(如硬盘)读取或写入数据时,数据会先暂存在内核缓冲区中。例如,从硬盘读取数据时,数据先被读入内核缓冲区,然后才被复制到用户空间。
  • 提高效率:内核缓冲区可以减少硬件设备的频繁操作。例如,当有多个小的写操作时,内核可以将这些数据先暂存在缓冲区中,然后一次性写入硬盘,从而提高 I/O 效率。
  • 解耦硬件和用户空间:内核缓冲区起到一个中间层的作用,使得用户程序不需要直接与硬件设备交互,而是通过内核缓冲区间接操作。

3. 用户缓冲区

用户缓冲区是用户程序分配的内存区域,用于存储 I/O 操作的数据。它的主要作用是:
  • 存储数据:用户程序通过系统调用(如 readwrite)与内核交互时,数据会在用户缓冲区和内核缓冲区之间进行拷贝。例如,当用户程序调用 read 从文件中读取数据时,内核会将数据从内核缓冲区复制到用户缓冲区。
  • 方便用户程序处理:用户缓冲区是用户程序可以直接访问的内存区域,用户程序可以方便地对数据进行处理。

 

 

 

 

kafka的0拷贝

 

https://blog.csdn.net/m0_50546235/article/details/136892707

 

 

4.endtoend的压缩方式。压缩包在broker不解压,到消费者端解压。

posted @ 2023-06-13 02:07  人在代码在  阅读(26)  评论(0)    收藏  举报