美文网首页
Reactor(反应堆)设计模式

Reactor(反应堆)设计模式

作者: 自负的鱼 | 来源:发表于2019-01-16 17:14 被阅读86次

Reactor(反应堆)设计模式

事件驱动模型,主要为解决多输入源请求多问题。线程池处理请求的问题会导致峰值线程资源耗尽,服务阻塞情况。这时候需要使用Reactor模式,通过多路复用分发思想大大减少线程的使用。

有一个Service Handler,多个Request Handler;Reactor模式没有使用消息队列作为缓冲,每当一个Event输入到Service Handler后,Service Handler会根据Event类型分发给不同的Request Handler进行处理。

Reactor设计模式主要角色

  • EventHandler:事件处理器,可以根据事件的不同状态创建不同状态处理器。
  • Handler:可以理解为事件,网络编程中为Socket,在数据库中为DBConnection
  • InitiationDispatcher:用于管理EventHandler,分发event容器,是一个事件处理器。
  • Demultiplexer:阻塞等待Handler中事件的到来。

Reactor模式执行流程

  1. 初始化InitiationDispatcher,并初始化一个EventHandler和Handler映射map
  2. 注册EventHandler 到InitiationDispatcher,每个EventHandler包含对应Handler的映射关系
  3. 调用InitiationDispatcher的handler_event()方法启动EventLoop,阻塞等待Event到来
  4. 当某个或某些Handler的Event发生时,select()方法返回。InitiationDispatcher根据返回的Handler找到EventHandler,并调用handler_event()。
  5. EventHandler的handler_event()方法还是会向InitiationDispatcher注册新的EventHandler,例如当请求链接事件发生时,会重新注册EventHandler。

Reactor实现类

  1. InputSource 外部输入源,需要Reactor处理的原始类
  2. Event 事件类,根据原始输入源不同状态包装成一个事件,Reactor模式处理的都是Event事件
  3. EventType 枚举类型表示不同事件类型
  4. EventHandler 处理事件的Handler,包含不同事件处理器的公共逻辑
  5. AcceptEventHandler/ReadEventhandler 继承子EventHander具体事件的处理器实现类,根据事件的不同状态定义不同处理器
  6. Dispatcher 事件分发器,Reactor模式解决的主要问题就是接收到任务后快速分发处理器。
  7. Selector 事件轮训选择器,从轮训队列中取出事件状态,取出可以处理的所有事件
  8. Acceptor 事件接收器,负责初始化selector和接收缓冲队列
  9. Server 负责启动Acceptor服务,并启动相关服务接收缓冲队列

相关文章

  • Reactor 反应堆设计模式

    为了应对高并发的服务器端开发,微软在2009年提出了一种更优雅地实现异步编程的方式Reactive Program...

  • Reactor(反应堆)设计模式

    Reactor(反应堆)设计模式 事件驱动模型,主要为解决多输入源请求多问题。线程池处理请求的问题会导致峰值线程资...

  • Reactor线程的三种模型(一文解析)

    Reactor [riˈæktə(r)] 反应堆,即IO多路复用模型。 三种模式用生活案例举例: 单Reactor...

  • Redis的IO多路复用——单线程的理解(Redis6.0之后的

    Reactor设计模式 Reactor 设计模式是一种事件驱动的设计模式,分发器(Dispatcher)使用多路分...

  • 阅读 大话Netty线程模型和Reactor模式

    讲解reactor模式 和 Netty线程模型 设计模式 Reactor模式(反应器设计模式),是一种基于事件驱动...

  • Netty理论三:Netty线程模型

    1、Reactor模式:NIO网络框架的典型模式 Reactor是网络编程中的一种设计模式,reactor会解耦并...

  • Netty线程模型

    Reactor线程模型 Reactor是反应堆的意思,Reactor模型,是指通过一个或多个输入同时传递给服务处理...

  • IO多路复用Reactor

    简介 reactor是网络编程中基于IO多路复用的一种设计模式,同时reactor模式也是23种设计模式的一种。使...

  • Reactor Core

    本文从 介绍下 Reactor (反应堆)首先简单介绍Reactor 是什么东西、其次解决什么问题、领域应用、原理...

  • Reactor模式

    什么是Reactor模式 Reactor模式是一种设计模式,它是基于事件驱动的,可以并发的处理多个服务请求,当请求...

网友评论

      本文标题:Reactor(反应堆)设计模式

      本文链接:https://www.haomeiwen.com/subject/kdomdqtx.html