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 操作的数据。它的主要作用是:
-
存储数据:用户程序通过系统调用(如
read或write)与内核交互时,数据会在用户缓冲区和内核缓冲区之间进行拷贝。例如,当用户程序调用read从文件中读取数据时,内核会将数据从内核缓冲区复制到用户缓冲区。 -
方便用户程序处理:用户缓冲区是用户程序可以直接访问的内存区域,用户程序可以方便地对数据进行处理。



kafka的0拷贝

https://blog.csdn.net/m0_50546235/article/details/136892707
4.endtoend的压缩方式。压缩包在broker不解压,到消费者端解压。

浙公网安备 33010602011771号