资讯专栏INFORMATION COLUMN

【源起Netty 前传】Linux网络模型小记

Null / 1001人阅读

摘要:非阻塞模型这种也很好理解,由阻塞的死等系统响应进化成多次调用查看数据就绪状态。复用模型,以及它的增强版就属于该种模型。此时用户进程阻塞在事件上,数据就绪系统予以通知。信号驱动模型应用进程建立信号处理程序时,是非阻塞的。

引言

之前的两篇文章 FastThreadLocal怎么Fast?、ScheduledThreadPoolExecutor源码解读 搞的我心力交瘁,且读源码过程中深感功力不足,遂决定“磨刀”——先达到较熟练使用netty的程度,再回过头来继续啃源码!至于“磨刀石”嘛,选择了《Netty权威指南》(第二版)……哎呦,不错奥!

正文

其实本篇文章更像是一篇读书笔记,记录了Linux网络模型的相关知识。为什么要关注Linux网络模型?因为java的各I/O模型与之关系紧密!

书中根据UNIX网络编程,作了5种I/O模型分类:

阻塞I/O模型

最简单的一种,等待直至完成的过程,不多作解释。

非阻塞I/O模型

这种也很好理解,由阻塞I/O的死等系统响应进化成多次调用查看数据就绪状态

I/O复用模型

select/poll,以及它的增强版epoll就属于该种模型。与非阻塞I/O模型相比,愚以为有两点优势:

不需要用户进程进行扫描以确认数据就绪状态,改为系统层面帮你“扫描”。此时用户进程阻塞在select事件上,数据就绪系统予以通知。

epoll 基于事件驱动的方式代替扫描

这里多提一句,epoll把消息通知给用户空间时避免了内存复制(0拷贝),使用的mmap技术,即内核和用户空间映射到同一内存实现。

信号驱动I/O模型

应用进程建立SIGIO信号处理程序时,是非阻塞的。而数据就绪时,以SIGIO信号的形式通知到用户进程。

异步I/O模型

特点是,几乎全部交由系统处理,数据处理完毕后,才通知到用户进程。

后记

以上的描述中,是不是很多词句都在java I/O相关的世界中听到过?是的——阻塞I/O对应BIO,epoll之于NIO,NIO的多路复用技术对标I/O复用模型,以及AIO和异步I/O模型……

好了,that"s all,小记就要有小记的样子。
最后,再次推荐《Netty权威指南》!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68445.html

相关文章

  • 源起Netty 正传】Netty Channel

    摘要:搞懂了这部分后,我们将明白在世界中扮演的角色进击的此图展示的已经算是优化后的了用到了线程池。多线程将这种处理操作分隔出来,非型操作业务操作配备以线程池,进化成多线程模型这样的架构,系统瓶颈转移至部分。 Channel定位 注意:如无特别说明,文中的Channel都指的是Netty Channel(io.netty.channel) 一周时间的Channel家族学习,一度让我怀疑人生——...

    jindong 评论0 收藏0
  • 源起Netty 外传】ServiceLoader详解

    摘要:答曰摸索直译为服务加载器,最终目的是获取的实现类。代码走起首先,要有一个接口形状接口介绍然后,要有该接口的实现类。期具体实现依靠的内部类,感性趣的朋友可以自己看一下。总结重点在于可跨越包获取,这一点笔者通过多模块项目亲测延时加载特性 前戏 netty源码注释有云: ... If a provider class has been installed in a jar file tha...

    MoAir 评论0 收藏0
  • 源起Netty 外传】System.getPropert()详解

    摘要:阅读源码时,发现很多,理所当然会想翻阅资料后,该技能,姿势如下环境中的全部属性全部属性注意如果将本行代码放在自定义属性之后,会不会打出把自定义属性也给获取到可以结论会获取目前环境中全部的属性值,无论系统提供还是个人定义系统提供属性代码中定义 阅读源码时,发现很多System.getProperty(xxx),理所当然会想:whats fucking this? 翻阅资料后,Get该技能...

    lixiang 评论0 收藏0
  • 源起Netty 正传】升级版卡车——ByteBuf

    摘要:之所以称它为卡车,只因编程思想中有段比喻我们可以把它想象成一个煤矿,通道是一个包含煤层数据的矿藏,而缓冲器则是派送到矿藏中的卡车。那么升级版卡车,自然指的就是。结构和功能之所以再次打造了升级版的缓冲器,显然是不满中的某些弊端。 卡车 卡车指的是java原生类ByteBuffer,这兄弟在NIO界大名鼎鼎,与Channel、Selector的铁三角组合构筑了NIO的核心。之所以称它为卡车...

    Jason_Geng 评论0 收藏0
  • 源起Netty 外传】FastThreadLocal怎么Fast?

    摘要:实现原理浅谈帮助理解的示意图中有一属性,类型是的静态内部类。刚刚说过,是一个中的静态内部类,则是的内部节点。这个会在线程中,作为其属性初始是一个数组的索引,达成与类似的效果。的方法被调用时,会根据记录的槽位信息进行大扫除。 概述 FastThreadLocal的类名本身就充满了对ThreadLocal的挑衅,快男FastThreadLocal是怎么快的?源码中类注释坦白如下: /** ...

    gxyz 评论0 收藏0

发表评论

0条评论

Null

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<