11、Reactor模式
2021-02-05 10:51:22 29 举报
三种模式图
作者其他创作
大纲/内容
单Reactor多线程
1、Reactor主线程MainReactor对象通过select监听连接事件,收到事件后,通过Acceptor处理连接事件2、当Acceptor处理连接事件后,MainReactor就会把连接分配给SubReactor3、SubReactor将连接加入到连接队列进行读写监听,并创建相应的处理Handler4、当有事件发生时,SubReactor就会调用对应的Handler进行处理5、Handler通过read读取数据,并分发(dispatch)给下面的worker线程池来处理6、worker线程池为每一个数据处理业务分配一个独立的thread,并返回处理的结果7、Handler收到worker线程处理的结果后,再通过send将结果返回给Client8、Reactor主线程可以对应多个子Reactor线程,即MainReactor可以对应多个SubReactor
1、优点:父线程和子线程职责分明,主(boss)只负责接待(accept),子(worker)完成具体的业务处理2、优点:父线程与子线程的数据交互简单,Reactor主线程只需要把新连接(socketChannel)传递给子线程,子线程无需返回数据3、缺点:编程复杂度高( 所以Netty对象NIO进行了封装),随之而来的就是学习升本的提升
多Reactor多线程(主从Reactor)
Netty
单Reactor单线程
Reactor
Netty终极图
单Reactor单线程:酒店前台接待和大厅服务都是同一个人单Reactor多线程:一个酒店前台接待,多个大厅服务员主从Reactor:多个酒店前台接待,多个大厅服务员1、响应快2、扩展性好,可以任意扩展SubReactor3、复用性好,Reactor模型本身与具体的事件处理逻辑无关,具有很高的复用性
0 条评论
下一页