『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

nio就是解决了传统bio的多线程的问题,而且整个nio代码里面没有一句多线程的代码的,nio的服务端就是一个线程。源码https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-io与nio线程模型reactor模型(上)(53)/nio

『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

(一)nio和bio的对比

  • bio的方式

『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

  • nio的方式

    > 增加了selectort的能力,底层就是一个多路复用模型。

    > 一个客人服务后,另一个客人上来服务员就立刻为另一个客户服务。

『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

(二)nio模型结构

底层是Reactor模型

『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

客户端发送请求之后Acceptor先进行接收。解析客户端到底是个说什么事件,客户端关注了什么事件服务器端是可以看到的,如果是读事件转发给 “Handler读”,如果是写事件转发给 ” Handler 写”。任何请求都接触通过分发器Dispatch确定对应事件的Handler。

  • 需要多个服务员,需要selector通知服务员。

Reactor多线程模型就是将Handler中的IO操作和非IO操作分开,操作IO的线程称为IO线程,非IO操作的线程称为工作线程!这样的话,客户端的请求会直接被丢到线程池中,客户端发送请求就不会堵塞。

『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

当用户进一步增加的时候,Reactor会出现瓶颈!因为Reactor既要处理IO操作请求,又要响应连接请求!为了分担Reactor的负担,所以引入了主从Reactor模型!

『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

PS:下节一起说说netty的源码部分。Netty是一个高性能NIO框架,其是对Reactor模型的一个实现!

>>原创文章,欢迎转载。转载请注明:转载自,谢谢!>>原文链接地址:上一篇:

已是最新文章

原文 

https://idig8.com/2019/05/18/hulianwangjiagouruanjianjiagou-ioyunioxianchengmoxingreactormoxingxia54/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址