反应器模式 - 维基百科,自由的百科全书

反应器模式Reactor pattern)是一种为处理服务请求并发提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序。 [1]

结构

[编辑]
反应式应用的UML 2构件图。典型的由2个子系统组成的反应器。把柄(又名套接字)和解多路器(比如selectepoll)典型的由操作系统来提供。反应式应用将提供分发器(事件循环)来通过调用事件处理器而反应于把柄事件,事件处理器被注册为回调[2]
反应式服务器的UML 2序列图。在开始事件循环之前,反应式应用典型的为诸特定请求注册把柄和事件处理器。事件循环响应基于请求的事件,通过调用事件处理器,传递把柄用于处理[2]
  • 资源: 可供系统输入或输出的资源。
  • 同步事件解多路器: 使用一个事件循环 ,以阻止所有的资源。当可以启动一个同步操作上的资源不会阻塞,多路分解器发送资源到分发器。
  • 分发器: 处理请求程序的注册和注销。将资源分发到相关的处理程序.
  • 请求处理器: 应用程序定义的请求处理程序和相关资源。

属性

[编辑]

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

优点

[编辑]

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

限制

[编辑]

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

参见

[编辑]

参考

[编辑]
  1. ^ 施密特,道格拉斯等人。《面向模式的软件架构第2卷:模式的并发和网络对象。》第2卷。Wiley出版社,2000。
  2. ^ 2.0 2.1 2.2 Schmidt, Douglas C., An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events (PDF), [2015-02-04], (原始内容存档 (PDF)于2015-04-05) 
  3. ^ Kegel, Dan, The C10K problem, [2007-07-28], (原始内容存档于2013-07-18) 

外部链接

[编辑]