reactor中包含5个核心结构,那么从操作系统低层次的调度来看5部分是这样的。

(1)Handle(句柄资源描述符)本质是对客户端连接上来以后发生事件的处理机制,比如连接成功,读取数据,发送数据等状态。

(2)同步事件分离器,相对于nio来说可以理解为selector,对于客户端过来的事件需要一个一个的处理,根据事件的不同分发给具体不同的处理器。

(3)initialize dispatch(初始事件分发器)实际为管理对象,所有的事件集合首先会达到这里,后面会通过select分发,包括后面的handle也要注册到这里,可以理解为真正意义上的reactor对象。

  ps:而且当一个selector选择出一些事件以后,会交给initialize dispatch,再由initialize dispatch交给对应感兴趣具体事件的concrete event handle处理。所以实际情况如果是耗时操作,那么handle中的方法一定要放在workerThread中去处理,否则会影响分发器的Loop工作。

(4)Event Handle 统一事件处理器,在处理器中可以获取多种事件的状态。

(5)concrete Event Handle 具体的事件处理器,每一种事件去回调其处理逻辑。“ 映射到netty中可以理解为一些列为了事件处理而提供的handle,比如我在channelPipeline中添加的“编解码处理器”,“拆包处理器”等”

而netty的封装恰好仅仅让程序员关心了具体数据发过来以后的读取和响应处理即可。

netty本身就是基于reactor模式的请求处理响应的网络框架。

05-11 16:58