美文网首页码农的世界『互联网架构』
『互联网架构』软件架构-io与nio线程模型reactor模型(

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

作者: IT人故事会 | 来源:发表于2019-05-19 22:13 被阅读4次

    原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
    原文链接地址:『互联网架构』软件架构-io与nio线程模型reactor模型(下)(54)

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

    (一)nio和bio的对比

    • bio的方式
    • nio的方式

    增加了selectort的能力,底层就是一个多路复用模型。
    一个客人服务后,另一个客人上来服务员就立刻为另一个客户服务。

    (二)nio模型结构

    底层是Reactor模型

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

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

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

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

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

    相关文章

      网友评论

        本文标题:『互联网架构』软件架构-io与nio线程模型reactor模型(

        本文链接:https://www.haomeiwen.com/subject/jpkuiqtx.html