反应器模式

反应器模式（）是一种为处理服务请求并发提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后，服务处理程序使用解多路分配策略，然后同步地派发这些请求至相关的请求处理程序。 施密特，道格拉斯等人。《面向模式的软件架构第2卷：模式的并发和网络对象。》第2卷。Wiley出版社，2000。

结构

反应式应用由多个活动部份组成并依赖于一些支持机制：

应用

反应器模式及其变体已经用于很多web服务器、应用服务器和网络编程框架：

 自适配通信环境（ACE）

 Netty
 Nginx
 Node.js
 Perl Object Environment

 Spring Framework（版本5之后）

 Twisted
 Vert.x

属性
所有的反应器系统在定义上是单线程的，但可以在多线程环境中存在。

优点
反应器模式可完全分离程序特定代码，这意味着应用可分为模块化的，可复用的组件。另外，由于请求的处理程序是同步调用，反应器模式可允许简单粗粒并发而不必添加多线程并发系统的复杂性。

限制
由于反向的流程控制，反应器模式比过程模式更难以调试 。此外，因为请求处理器只会被同步调用，因此会限制反应器模式的最大并发数，特别是在对称多处理硬件。反应器模式的可扩展性，不仅受限于请求处理器的同步调用，同时也受解多路器限制。

参见
 （该模式也会解多路复用和分派事件，但它是异步的）

 事件驱动编程
 libuv
 反应式编程

 观察者模式

参考

外部链接
 对象行为模式的解复用和调度处理对同步活动 由 Douglas C.施密特
 APR网络和反应器模式
 高度可扩展的NIO的服务器的体系结构
 Akka的I/O层体系结构

Category:软件设计模式
Category:事件 (计算机)
Category:并发计算