淘先锋技术网

首页 1 2 3 4 5 6 7

Reactor模式

Reactor 是反应堆的意思,Reactor 模型是指通过一个或多个输入同时传递给处理器。服务端将它们同步分派给请求对应的处理线程,Reactor 模式也叫 Dispatcher 模式。Netty 整体是整体采用了主从Reactor模型

Reactor角色

Reactor模型中有三种角色,分别是

  1. Acceptor:处理客户端新连接,并分派请求到处理器链中
  2. Reactor:负责监听和分配事件,将I/O事件分派给对应的Handler。
  3. Handler:事件处理,如编码、解码等
    在这里插入图片描述

Reactor 线程模型:

Reactor有三种线程模型分别是:单Reactor单线程模型、单Reactor多线程模型、主从Reactor多线程模型。而Netty正是采用最后一种。

1. 单Reactor单线程模型

该模型下所有请求建立、IO读写、业务处理都在一个线程中完成。如果在业务中处理中出现了耗时操作,就会导致所有请求全部处理延时。因为他们是有由一个线程同步处理的。上节所讲的心跳服务即是一个列例子。
在这里插入图片描述

单Reactor多线程模型

为了防止业务处理导致阻塞,在多线程模型下会用一个线程池来异步处理业务,当处理完成后在回写给客户端。上节所讲的Http服务即是一个列例子
在这里插入图片描述

主从Reactor多线程模型

单React始终无法发挥现代服务器多核CPU的并行处理能力,所以Reactor是可以有个的,并且有一主多从之分。一个主Reactor仅处理连接,而多个子Reactor用于处理IO读写。然后交给线程池处理业务。Tomcat就是采用该模式实现。