反应器模式
反应器模式(Reactor_pattern)是一种为处理服务请求并发 提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序。 [1]
结构
- 资源: 可供系统输入或输出的资源。
- 同步事件解多路器: 使用一个事件循环 ,以阻止所有的资源。当可以启动一个同步操作上的资源不会阻塞,多路分解器发送资源到分发器。
- 分发器: 处理请求程序的注册和注销。将资源分发到相关的处理程序.
- 请求处理器: 应用程序定义的请求处理程序和相关资源。
属性
所有的反应器系统在定义上是单线程的,但可以在多线程环境中存在。
优点
反应器模式可完全分离程序特定代码,这意味着应用可分为模块化的,可复用的组件。另外,由于请求的处理程序是同步调用,反应器模式可允许简单粗粒并发而不必添加多线程并发系统的复杂性。
限制
由于反向的流程控制,反应器模式比过程模式更难以调试 [2]。此外,因为请求处理器只会被同步调用,因此会限制反应器模式的最大并发数,特别是在对称多处理硬件。反应器模式的可扩展性,不仅受限于请求处理器的同步调用,同时也受解多路器限制。[3]
另请参见
- 广播反应器模式 (该模式也会解多路复用和分发事件,但是是异步的)
- 应用服务器
- C10K问题
参考
- ^ 施密特,道格拉斯等人。面向模式的软件架构第2卷:模式的并发和网络对象。第2卷。 Wiley出版社,2000。
- ^ Schmidt, Douglas C., An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events (PDF), [2015-02-04], (原始内容存档 (PDF)于2015-04-05)
- ^ Kegel, Dan, The C10K problem, [2007-07-28], (原始内容存档于2013-07-18)
外部链接
- 对象行为模式的解复用和调度处理对同步活动(页面存档备份,存于互联网档案馆) 由 Douglas C.施密特
- APR网络和反应器模式(页面存档备份,存于互联网档案馆)
- 高度可扩展的NIO的服务器的体系结构
- Akka的I/O层体系结构(页面存档备份,存于互联网档案馆)