ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

netty kafka rocketMQ 的零拷贝 文件读写IO 实现

2020-01-27 21:44:27  阅读:437  来源: 互联网

标签:netty 读写 kafka FileChannel FileChannle IO 磁盘 pagecache


netty零拷贝——《Netty权威指南》22.2.6

文件IO操作分类

1、普通IO

2、Filechannel

3、MapperByteBuffer

4、DirectByteBuffer

https://zhuanlan.zhihu.com/p/35277219——什么是pageCache

http://www.jiangxinlingdu.com/thought/2018/11/28/io.html——文件读写IO分类

FileChannle和不同IO读写的区别

FileChannel 存在于 java.nio 包中,属于 NIO 的一种,但是注意 NIO 并不一定意味着非阻塞,这里的 FileChannel 就是阻塞的。那么这种新IO较与传统的IO有哪些优势呢?

其实这么说不够严谨,因为你必须用对了FileChannle,不然不存在优势之说。如何用对,就需要先从FileChannle的特点入手,FileChannel 采用了 ByteBuffer 这样的内存缓冲区,让我们可以非常精准的控制写盘的大小,这是普通 IO 无法实现的。

简单来说,传统的IO写数据时,先是往pagecache写入数据,不会马上刷到磁盘,而是将 pagecache 对应的位置标记为脏页,然后内核程序会定时将脏页的数据统一刷到磁盘中,但是为了安全起见,如果突然断电了pagecache中的数据就会丢失,所以这个定时的时间还不能太长,但我们希望的是,每次刷盘的尽可能在脏页比较多的情况下,不然对磁盘的写入效率太低。

而 FileChannel 将ByteBuffer 中的数据也不会马上写入到磁盘中,也是先写到pagecache,但是FileChannel 可以控制写盘的大小,它当然会尽可能写满一块数据块,然后再调用 force() 方法,用于通知操作系统进行及时的刷盘

kafka rocketmq 都有用 MMAP 请查阅对应PDF文件

噶嚟嘎贡 发布了18 篇原创文章 · 获赞 0 · 访问量 969 私信 关注

标签:netty,读写,kafka,FileChannel,FileChannle,IO,磁盘,pagecache
来源: https://blog.csdn.net/weixin_42226343/article/details/104095710

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有