支撑百万并发的“零拷贝”技术,你了解吗?(13)


 
 
总结
本文开篇详述了 Linux 操作系统中的物理内存和虚拟内存,内核空间和用户空间的概念以及 Linux 内部的层级结构 。
在此基础上,进一步分析和对比传统 I/O 方式和零拷贝方式的区别,然后介绍了 Linux 内核提供的几种零拷贝实现 。
包括内存映射 mmap、Sendfile、Sendfile+DMA gather copy 以及 Splice 几种机制,并从系统调用和拷贝次数层面对它们进行了对比 。
接下来从源码着手分析了 Java NIO 对零拷贝的实现,主要包括基于内存映射(mmap)方式的 MappedByteBuffer 以及基于 Sendfile 方式的 FileChannel 。
最后在篇末简单的阐述了一下 Netty 中的零拷贝机制,以及 RocketMQ 和 Kafka 两种消息队列在零拷贝实现方式上的区别 。
作者:陈林
简介:五年研发与架构经验,曾任职 SAP 中国研发中心后端研发、上海冰鉴科技信息科技有限公司架构师助理,目前担任成都 ThoughtWorks 有限公司高级咨询师与研发人员 。熟悉大数据、高并发、负载均衡、缓存、数据库、消息中间件、搜索引擎、容器和自动化等领域 。个人学习能力强,技术热情高,热爱开源和写技术博客,善于沟通和分享 。

【支撑百万并发的“零拷贝”技术,你了解吗?】


推荐阅读