reactor模式——主从reactor多线程

参考视频:Netty核心技术及源码剖析 主从Reactor模式

1 主从reactor多线程模式架构

如上图所示,为主从reactor多线程模式图。

多线程reactor多线程模型的出现,是为了解决单reactor在高并发场景下的性能瓶颈。

一个reactor主线程(MainReactor),多个reactor子线程(SubReactor)。如果目前存在的reactor子线程都处于满运载的状态,则可以增加新的reactor子线程。

2 流程

(1)Reactor主线程MainReactor通过selsect监听连接事件。收到事件后,由Acceptor处理连接事件。
(2)当Accetor处理事件后,MainReactor将连接分配给SubReactor。
(3)SubReactor将连接加入到连接队列进行监听,并创建handler进行各种事件处理。
(4)当有新的事件发生时,Subreactor就会调用对应的handler处理。
(5)handler通过read读取数据,分发给后面的Work线程池处理。
(6)Worker线程池会分配独立的Worker线程进行处理(解码-计算-编码),并返回结果。
(7)handler收到相应的结果后,再通过send方法将结果返回给client。
(8)Reactor主线程可以对应多个Reactor子线程。即MainReactor可以关联多个SubReactor。

3 主从reactor模式的优缺点

3.1 优点

(1)父线程与子线程的数据交互简单职责明确。父线程只需要处理新的连接,子线程完成后续的业务处理。
(2)父线程与子线程的数据交互简单,reactor主线程只需要把新连接传给子线程,子线程无需返回数据。

3.2 缺点

编程复杂度高。

4 reactor模式的优点

(1)响应快。不必为单个同步时间所阻塞,虽然reactor本身依然是同步的。
(2)可以最大程度的避免复杂的多线程以及同步问题,并且避免了多线程/进程的切换开销。
(3)扩展性好。可以方便的通过增加reactor实例个数来充分利用CPU资源。
(4)复用性好。Reactor模型本身与具体事件处理逻辑无关,具有很高的复用性。

0

Leave a Reply

Your email address will not be published.