Netty学习前的基础知识(五):Reactor论文学习之工作流程

背景

记录和理解Reactor工作流程。


工作流程

Netty学习前的基础知识(五):Reactor论文学习之工作流程

  1. 当应用向Initiation Dispatcher注册具体的事件处理器,应用会标识出该事件处理器希望Initiation Dispatche在某个事件发生时向其通知的该事件,该事件于Handle关联。
  2. Initiation Dispatcher会要求每个事件处理器向其传递内部的Handle。该Handle向操作系统标识了事件处理器。
  3. 当所有的事件处理器注册完毕后,应用会调用handle_events方法来启动Initiaiton Dispacher的事件循环(死循环)。这时,Initiation Dispatcher 会将每个注册的事件管理器的Handle合并起来(放在集合中统一管理),并使用同步事件分离器等待这些事件的发生。比如说,TCP协议层会使用select同步事件分离器操作来等待客户端发送的数据到达的socket handle上。
  4. 当与某个事件源对应的Handle变为ready状态时(比如说,TCP socket变为等待读状态时),同步事件分离器就会通知Initiation Dispatcher。
  5. Initiation Dispatcher 会触发事件处理器回调方法,从而响应这个处于ready状态的Handle。当事件发生时,Initiation Dispatcher会将被事件源**的Handle作为key来寻找并分发恰当的事件处理器回调方法。
  6. Initiation Dispatcher 会回调事件处理器的handle_events回调方法来执行特定于应用的功能(开发者自己所编写的功能),从而响应这个事件。所发生的事件类型可以作为该方法参数并被该方法内部使用来执行额外的特定于服务的分离与分发。
小结
  1. 透过Reactor模式论文的核心图片,记录和学习Reactor模式的工作流程。