kafka零拷贝的原理
在实际应用中,如果需要把磁盘中的某个文件内容发送到远程服务器上,那么他必须经过几个拷贝过程(1)从磁盘中去读取目标文件的内容拷贝到内核缓冲区中(2)把内核缓冲区的数据拷贝到用户空间的缓冲区中(3)在应用程序中调用write()方法把用户空间缓冲区的数据拷贝到内核空间的socket Buffer中(4)把在内核模式下的socket Buffer中的数据赋值到网卡缓冲区,最后网卡缓冲区再把数据传输到目标服务器上。在这个过程中我们发现数据从磁盘到最终发送出去要经历4次拷贝,而在这4次拷贝过程中,有两次拷贝是浪费的,(1)从内核空间拷贝到用户空间(2)从用户空间再次拷贝到内核空间。所谓的零拷贝就是把这两次多余的拷贝忽略掉。应用程序可以直接把磁盘中的数据从内核中直接传输到socket.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)