Netty学习(一)——BIO/伪异步IO/NIO/AIO四种IO模型的演变
创始人
2024-02-08 15:04:56
0

IO模型历经了从BIO到伪异步IO,到NIO,再到AIO这四种IO模型的演变。其中伪异步IO是非官方说法。

一、BIO

BIO即Block Input Output,同步阻塞IO
BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到客户端连接请求后,为每个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流返回应答给客户端,线程销毁。
该模型最大的问题就是缺乏弹性伸缩能力,当客户端并发访问量增加后,服务端的线程个数和客户端并发访问数呈1:1的正比关系。因为线程是JVM非常宝贵的系统资源,当线程数膨胀之后,系统的性能将急剧下降,随着并发访问量的继续增大,系统会发生线程堆栈溢出、创建新线程失败等问题,并最终导致进程宕机或僵死,不能对外提供服务。因此很显然,这种模型无法满足高性能、高并发接入的场景。

二、伪异步IO

为了改进一线程一连接的这种模型,演进出了一种通过线程池或消息队列实现一个或多个线程处理N个客户端的模型。由于这种模型的底层通信机制依然使用同步阻塞IO,所以被称为“伪异步”。该模型服务端的线程池最大线程数N,与客户端个数M,形成N:M的比例关系,其中M可以远远大于N。通过线程池可以灵活地调配线程资源,设置线程的最大值,防止由于海量并发接入而导致线程耗尽。
伪异步IO实际上仅仅是对BIO线程模型的一个简单优化,无法从根本上解决同步IO导致的通信线程阻塞问题。

三、NIO

官方将NIO称之为 New I/O,因为它相对于之前的I/O类库是新增的。
但是更多的人喜欢称之为Non-block I/O,非阻塞IO,因为非阻塞I/O更能体现NIO的特点。

【NIO三大组件】

  1. 缓冲区 Buffer:在NIO库中,所有数据都是用缓冲区处理的。读数据时,直接读到缓冲区中;写数据时,写入到缓冲区中。
  2. 通道 Channel:通道与流的不同之处在于通道是双向的,流只是在一个方向上移动,而通道可以用于读、写或者二者同时进行。即Channel是全双工的。
  3. 多路复用选择器 Selector:多路复用选择器是NIO实现非阻塞I/O的关键。多路复用的核心就是Selector不断轮询注册在其上的Channel,如果某个Channel上面发生读或写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的I/O操作。

由于JDK的Selector在Linux等主流操作系统上通过epoll实现,它没有连接句柄数的限制,这意味着一个Selector线程可以同时处理成千上万个客户端连接,而且性能不会随着客户端的增加而线性下降。因此,该模型非常适合做高性能、高负载的网络服务器。

四、AIO

AIO即Asynchronous Input Output,异步IO
JDK7升级了NIO类库,升级后的NIO类库被称为NIO2.0,NIO2.0的异步套接字通道是真正的异步非阻塞I/O,对应于UNIX网络编程中的事件驱动I/O,即AIO。该模型不需要通过多路复用选择器Selector对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO的编程模型。

相关内容

热门资讯

尚德教育的老师教的怎么样? 尚德教育的老师教的怎么样?尚德教育机构有他们独有的教育方式,直播课程可以互动,没听懂的可以看回放反复...
真三赵云龙之心怎么合成 真三赵云龙之心怎么合成真三赵云龙之心怎么合成杀黄龙掉出来的。不过杀黄龙需要一些装备建议在单人模式下练...
小冰 和 小兵 的英文分别怎么... 小冰 和 小兵 的英文分别怎么写?拜托了各位 谢谢little ice little solder ...
进监狱为什么会被其他的犯人打? 进监狱为什么会被其他的犯人打?为什么呢?因为他们和大家一样相信弱肉强食的丛林法则!!!让你看看他们有...
有一本小说女主角叫林小溪男主角... 有一本小说女主角叫林小溪男主角叫李什么琛一不小心爱上总裁作者:聿天使主角:林小溪,李聿旻你问错地方了
百万新娘之爱无悔英杰是敏君亲生... 百万新娘之爱无悔英杰是敏君亲生的吗王英杰是林敏君跟王绍华的儿子,五十九集说了:王英杰是:林敏君、王绍...
女人在恋爱中通常有哪些误区?如... 女人在恋爱中通常有哪些误区?如何避免?女人在恋爱中误区有付出的多少与爱的程度为正比,如果你总觉得如果...
俩人去马尔代夫旅行结婚需要多少... 俩人去马尔代夫旅行结婚需要多少钱?从天津到马尔代夫旅行结婚需要多少钱 什么时候去合适 待上7天左右 ...
人是不是年龄越大越不敢动感情? 人是不是年龄越大越不敢动感情?人并不是年龄越大越不敢动感情,而是因为年龄越大就看透了这世间所有的感情...
说男主重生如何开加盟鞋店如何赚... 说男主重生如何开加盟鞋店如何赚钱的过程的小说。小说重生之超级商业帝国重生之最强富翁重生1978重生1...
拔萝卜儿歌改编歌曲 拔萝卜儿歌改编歌曲儿歌拔萝卜 拔萝卜. 嗨吆嗨吆,拔萝卜,嗨吆嗨吆,拔不动, 老太婆,快快来,快来帮...
为啥所有的付出再他就是一文不值... 为啥所有的付出再他就是一文不值你人与人之间"心已走远"。。。那就不在付出了,既然看透了,那就没必要付...
贝利亚奥特曼 贝利亚奥特曼贝利亚奥特曼有什么故事?他的性格很不好吗?赛罗奥特曼VS黑暗独眼巨人赛罗大怪兽大战!超银...
找一部日剧~~ 找一部日剧~~之前看到有人推荐过一部日剧,前两个字是“非常”后面几个字我忘了,请问有谁知道吗?应该是...
“一往如初”是什么意思? “一往如初”是什么意思?一往如初是什么意思还是像以前一样。一往:一直,始终。如:像。初:以前那样,一...
闲情倩意后面能连个什么句 闲情倩意后面能连个什么句连词后面也可以加有动词的句子. recoveries accrued to...
世界上最( )的( )... 世界上最( )的( )是世界上最(奇妙)的(感觉)是你爱上一个人的时候.世界上最(舒服)的(...
备胎说车:打蜡 封釉 镀膜 镀... 备胎说车:打蜡 封釉 镀膜 镀晶哪个好常规的保养漆面的方法有打蜡封釉,保持时间长久,和提升漆面的硬度...
下背痛的诊断 下背痛的诊断下背痛的诊断
金鼎猜一个数字 金鼎猜一个数字不知道啊啊啊啊金鼎猜一个数字是9