码迷,mamicode.com
首页 > 其他好文 > 详细

从rocketMQ到零拷贝

时间:2014-07-31 21:25:17      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   使用   os   io   数据   

rocketMQ是阿里的开源MQ,号称很强大很强大

rocketMQ的网络实现是依赖netty

http://my.oschina.net/plucury/blog/192577 这篇文章中描述了netty的零拷贝实现:

    根据文中的描述,“Linux中的sendfile()以及Java NIO中的FileChannel.transferTo()方法都实现了零拷贝的功能”,似乎“FileChannel.transferTo()和sendfile()是同一层的实现”,netty通过在FileRegion中封装NIO的FileChannel.transferTo()。

    同时,Netty中还有另一种形式的零拷贝,即Netty允许我们将多段数据合并为一整段虚拟数据供用户使用,而过程中不需要对数据进行拷贝操作。Netty通过在用户空间的操作,使用CompositeChannelBuffer将多个ChannelBuffer组成一个虚拟的ChannelBuffer来进行操作,这个过程中只操作ChannelBuffer们的引用。


---------------------------我是分割线


    但是,如果和C的能力范围比较,java的局限性还是暴露了。

    c能够通过重写部分网络软件栈,将DMA或网卡buffer的数据,直接发送出去,甚至不用走完整个网络栈(java只能干瞪眼了~)

    http://blog.csdn.net/jiangbo_hit/article/details/6146502  再补一条引用,内容是什么自己猜

从rocketMQ到零拷贝,布布扣,bubuko.com

从rocketMQ到零拷贝

标签:style   blog   http   java   使用   os   io   数据   

原文地址:http://my.oschina.net/kakablue/blog/296892

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!