美文网首页Netty
Reactor多线程模型

Reactor多线程模型

作者: 小怪兽狂殴奥特曼 | 来源:发表于2018-04-08 15:18 被阅读22次

    1 Reactor的组成


    由图可以看到,Reactor的几个关键组成部分:

      1. Dispacther:事件分发器,负责handle的注册注销,事件的处理
      1. Handle:文件句柄,内核监控的对象
      1. IO Multiplexer:IO复用器,实现同时处理多个IO流的关键。常见的复用器有select,epoll,kqueue,poll等等。
      1. Event Handler:事件处理句柄集合,每个文件句柄都对应一个句柄。

    2 时序图

    3 Reactor多线程模型

    Reactor模型最常使用的场景就是网络服务器。
    网络服务器的基本处理模型如下:建立连接->读取请求->解析请求->处理服务->编码结果->返回结果。
    基于网络服务器的基本模型,Reactor衍生出了几种多线程模型。

    3.1 单线程模型


    特点:将网络服务器的所有步骤都在Reactor的主线程内处理。
    优点:模型简单,编码容易。
    缺点:性能不够高,如果主线程先在处理请求阶段,容易导致后续的请求无法继续响应。
    适用场景:EventHandler业务逻辑简单,执行时间短,不需要访问数据库,不需要访问磁盘、不需要访问外部网元、不需要阻塞等待其它资源。

    3.2 ThreadPool模型


    特点:将服务器处理模型分为两个阶段:IO操作阶段和非IO操作阶段。IO操作阶段交给Dispatcher来做,非IO操作阶段采用线程池来处理
    优点:单个句柄请求处理阻塞也不会影响其它句柄。
    缺点:编程模型更加复杂,多线程切换增加开销。
    适用场景:EventHandler处理时间不定,需要阻塞等待或者耗时很长。

    3.3 主从Reactor模型


    特点:将连接请求句柄和数据传输句柄分开处理,使用单独的Reactor来处理连接请求句柄,提高数据传送句柄的处理能力。
    适用场景:高并发

    相关文章

      网友评论

        本文标题:Reactor多线程模型

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