0%

Reactor 响应器模式

缓慢的 I/O

访问 RAM 的时间为 ns 级, 而访问磁盘或者网络上的数据的时间为 ms 级, RAM 的传输速率一般为 GB/s, 而磁盘或网络仅仅能达到 GB/s, I/O 操作对 CPU 而言通常代价并不高, 但它在请求发送的时刻和操作完成的时刻之间增加了一个延迟

分类

  • 阻塞 I/O : 与 I/O 请求相对应的函数调用将阻塞线程的执行, 直到操作完成, 在磁盘访问的情况下, 阻塞可以持续几毫秒到几分钟甚至更多
  • 非阻塞 I/O : 系统调用总是立即返回, 而无须等待数据读取或写入, 访问非阻塞 I/O 的最基本模式是在循环内主动轮询资源, 直到返回一些实际数据, 这被称为 忙碌等待
  • 事件多路分解器: 收集并排列一套被监视的资源的 I/O 事件, 并阻塞它们, 直到有新事件来处理

Reactor 反应器模式

反应器模式 (Reactor pattern) 是一种为处理并发服务请求, 并将请求提交到一个或者多个服务处理程序的事件设计模式, 简单说, 就是如何处理多个客户端的并发请求的解决模式

反应器模式由以下组成

  • Reactor 反应器线程: 负责响应 IO 事件, 并且分发到 Handlers 处理器
  • Handlers 处理器: 非阻塞的执行业务处理逻辑