Reactor设计模式

x33g5p2x  于2021-11-21 转载在 React  
字(0.7k)|赞(0)|评价(0)|浏览(198)

Reactor模式简介

Reactor模式是一个基于事件分发的模式。主要用于IO多路复用。

当一个事件到来的时候,Reactor根据事件的不同类型,通知对应的handler处理。

Reactor详解

本文拿 网络IO多路复用来举例,我们都知道IO多路复用可以提高服务器的并发处理能力!

IO多路复用就是一个线程可以监控多个socket,减少线程的创建。当服务器连接数过多的时候,IO多路复用能够减少线程数,也可以减少线程上线切换导致的资源浪费。

但是socket分为两种情况:
1、负责新建连接的socket
2、用于读取数据的socket

对于这两种socket,处理方式是不同的。Reactor模式可以根据事件的不同,将这两种不同的情况分发给不同的handler。

如上图所示,Reactor用于接收事件,然后分发事件,如果是新建连接事件,就分发给Acceptor处理,如果是读取事件,就将数据分发给Handler处理

上述是单Reactor单线程处理模式,也就是所有的事件都分发给一个Reactor,并且对于所有的事件的处理都是在一个线程中的,这样会导致无法利用多核资源。

单Reactor多线程模型

单Reactor多线程模式下,Reactor将对应的任务提交给对应的handler,handler会利用线程池的资源来执行对应的任务,利用多核能够提高处理的效率

多Reactor多线程模型

多Reactor多线程模式下,会有MainReactor和SubReactor两种模式,
MainReactor只负责socket的新建连接事件,不会再监听socket的读取事件,而是会建立一个新的Reactor来监听socket的读取事件

SubReactor只负责监听多个socket的监听事件。

相关文章

微信公众号

最新文章

更多