Reactor 模型


1  什么是Reactor 模型?

reactor是一种处理并发的模式,将请求提交的一个或者多个服务处理业务,也就是说应用程序将接口注册到reactor反应堆上,当底层的复用器检测到了就绪事件,就会调用注册的接口处理业务。

而reactor模式框架包括: 事件源,Reactor  多路分发机制,事件处理程序

  • handle--事件源:在Linux统称为文件描述符  window上为句柄  ,在libevent中有3种类型事件:定时器事件(event time)信号事件(signal event)和I/O事件
  • event demultiplexer--多路分发机制:由操作系统选择select /epoll 等,是一个系统调用,将关心的事件注册到event中,检测是否有事件发生,当事件到达事,通知已经注册的描述符
  • reactor反应器:是一个事件管理的接口,内部使用多路分发机制进行注册,和销毁事件,当多路分发机制检测到描述符有事件发生时,调用该事件的注册的回调函数处理,运行事件循环。在libevent中就是一个event_base结构体
  • Event Handler--事件处理程序:具体的对于就绪的事件的具体处理,供Reactor调用,在libevent中就是一个event结构体

 

思想就是:分而治之+事件驱动

处理流程:

reactor 本质上是同步的I/O,因为:

  1. 应用程序注册相关事件和事件处理
  2. 多路复用检测就绪事件
  3. 事件分离器,分发事件处理方法
  4. 事件处理方法,读取后,进行下一步操作

 reactor 的优点:

  1. 响应快,不会为某个I/O阻塞,但是reactor本身还是同步的
  2. 编程相对简单,可以避免复杂的多线程安全问题
  3. 可扩展性,可以增加reactor实例,来充分利用CPU
  4. 可复用行,reactor本身和逻辑无关

猜你喜欢

转载自www.cnblogs.com/lc-bk/p/12389106.html