The Reactor pattern 目的和优点

翻译 2015年07月08日 16:05:24

the Reactor Pattern from  An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events

 

 

intent:
The Reactor design pattern handles service requests that are delivered concurrently to an application by one or more clients.
Each service in an application may consist of serveral methods and is represented by a separate event handler that is responsible for dispatching service-specific requests.
Dispatching of event handlers is performed by an initiation dispatcher, which manages the registered event handlers.
Demultiplexing of service requests is performed by a synchronous event demultiplexer.
Reactor Pattern 为了处理一个或者多个客户端并发分发到应用程序的请求.
应用程序由许多不同的方法组成来处理客户端端每一个特殊的请求.通过初始化一个dispatcher来管理注册的事件,同时负责分发请求.
多路复用服务器请求是通过一个同步的事件分发器.

 

Benefits
The Reactor pattern offers the following benefits:

Separation of concerns:
The Reactor pattern decouples application-independent demultiplexing and dispatching mechanisms from application-specific hook method functionality.
The application-independent mechanisms become reusable components that know how to demultiplex events and dispatch the appropriate hook methods defined by Event Handlers.
In contrast, the application-specific functionality in a hook method knows how to perform a particular type of service.
分离关注点:

Reactor Pattern 通过在应用程序中指定函数把多路复用和分发器分离机制来解耦合.
应用程序独立机制变成了可以用组件因为事件被分发到不同的处理函数.
总之,应用程序指定函数来处理不同的服务器请求.

Improve modularity, reusability, and configurability of event-driven applications:
The pattern decouples application functionality into separate classes.
For instance, there are two separate classes in the logging server: one for establishing connections and another for receiving and processing logging records.
This decoupling enables the reuse of the connection establishment class for different types of connection-oriented services
(such as file transfer, remote login, and video-on-demand).
Therefore, modifying or extending the functionality of the logging server on only affects the implementation of the logging handler class.

增强模块型,重用行和灵活配置型的事件驱动程序:
Reactor Pattern 把应用程序分离成不同的部分:
例如,在LoggingServer 中把程序分离成2个部分,一部分处理链接的建立(Socket的建立),另外一部分来处理日志的记录.(Socket I/O 输入输出部分)
对于不同类型的面向链接的服务,分离可以重用创建链接的部分.例如:文件传输,远程登录,多媒体播放.
所有,修改和拓展LoggingServer的功能仅仅影响Logging handler 实现部分.

Improves application portability:
The Initiation Dispatcher’s interface can be reused independently of the OS system calls that perform event demultiplexing.
These system calls detect and report the occurrence of one or more events that may occur simultaneously on multiple sources of events.
Common sources of events may in-clude I/O handles, timers, and synchronization objects.
On UNIX platforms, the event demultiplexing system calls are called select and poll .
In the Win32 API , the  WaitForMultipleObjects system call performs event demultiplexing.
 
提高应用程序的可移植性:
在执行事件的多路复用部分,可以根据不同的操作系统调用不同的函数来初始化Dispatcher.
在Unix 操作系统上,事件的多路复用可以使用select() 和Poll()函数.
在win32 API中,可以使用WaitForMultipleObjects()来调用事件的多路复用.

Provides coarse-grained concurrency control:
The Reactor pattern serializes the invocation of event handlers at the level of event demultiplexing and dispatching within a process or thread.
Serialization at the Initiation Dispatcher level often eliminates the need for more complicated synchronization or locking within an application process.

提供粗粒度的并发控制:
Reactor Pattern 模型在一个线程或者一个进程中在多路复用和分发器的级别上序列化事件处理(event handler)的激活.
在应用程序进程中在初始化Dispatcher的级别上序列化将消除对于复杂的同步和锁的使用.

 

 

 

Reactor模式和Preactor模式

Reactor和preactor都是IO多路复用模式,一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分...
  • shuizhilan
  • shuizhilan
  • 2015年10月29日 09:05
  • 1490

Reactor pattern

什么是Reactor Reactor又称Dispatcher,用于同步IO,它逆置了常见的函数调用机制,也就是说, Application将一个service对应的handler注册到Reactor...
  • abcd1f2
  • abcd1f2
  • 2014年07月17日 20:51
  • 324

Reactor(反应器)模式

两周前从知道这个模式到稍微明白一些写这篇博客的主要
  • lgl125
  • lgl125
  • 2014年11月03日 22:30
  • 3909

Reactor模型与epoll模型的区别

select模式的特点: 1.单个进程监测的fd受限制,默认下是1024个文件描述符; 2.轮询式检查文件描述符集合中的每个fd可读可写状态,IO效率会随着描述符集合增大而降低; 3.可以采用一...
  • crazy123456789
  • crazy123456789
  • 2014年04月12日 23:27
  • 2006

IO多路复用和Reactor模式

1. Reactor和Preactor模式 Reactor用于同步IO,Preactor用于异步IOReactor通常会和Connector模式一起使用,进一步解耦连接的建立与连接以后的逻辑 2....
  • working_brain
  • working_brain
  • 2014年07月21日 10:32
  • 1840

反应器模式(Reactor pattern)与观察者模式(Observer pattern)

将事件多路分用 将事件分派到各自相应的事件处理程序 分布式系统中的服务器应用程序必须处理多个向它们发送服务请求的客户机。然而,在调用特定的服务之前,服务器应用程序必须将每个传入请求多...
  • longruanyi
  • longruanyi
  • 2010年08月04日 08:19
  • 3616

两种高效的服务器设计模型:Reactor和Proactor模型

I/O模型 在文章《unix网络编程》(12)五种I/O模型中提到了五种I/O模型,其中前四种:阻塞模型、非阻塞模型、信号驱动模型、I/O复用模型都是同步模型;还有一种是异步模型。 Reactor...
  • u013074465
  • u013074465
  • 2015年05月30日 18:25
  • 6590

java学习-【转】什么是Reactor模式,或者叫反应器模式

原文地址:http://flychao88.iteye.com/blog/2157924原文如下:Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor...
  • bohu83
  • bohu83
  • 2016年04月11日 18:24
  • 600

Java NIO 反应器(Reactor)模式

概述 Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现...
  • z69183787
  • z69183787
  • 2014年04月14日 11:03
  • 1970

Maven 在项目管理中的优势

本人是一个Maven的新手,作为yi个新手谈一些关于Maven的认知:
  • tan_1208815066
  • tan_1208815066
  • 2014年09月15日 11:04
  • 2170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:The Reactor pattern 目的和优点
举报原因:
原因补充:

(最多只允许输入30个字)