1、标准定义
在分布式系统尤其是服务器这一类事件驱动应用中,虽然这些请求最终会被序列化地处理,但是必须时刻准备着处理多个同时到来的服务请求。
在实际应用中,这些请求总是通过一个事件(如CONNECTOR、READ、WRITE等)来表示的。
在有 序地处理这些服务请求之前,应用程序必须先分离和调度这些同时到达的事件。为
了有效地解决这个问题,我们需要做到以下4方面:
> 为了提高系统的可测量性和反应时间,应用程序不能长时间阻塞在某个事件源上而停止对其他事件的处理,这样会严重降低对客户端的响应度。
> 为了提高吞吐量,任何没有必要的上下文切换、同步和CPU之间的数据移动都要避免。
> 引进新的服务 或 改良已有的服务都要对既有的事件分离和调度机制带来尽可能小的影响。
> 大量的应用程序代码需要隐藏在复杂的多线程和同步机制之后。
为了解决上述问题,基于事件驱动的模型广泛地应用于高性能服务器中。
Reactor 和 Proactor 是基于事件驱动,在网络编程中经常用到两种设计模式。
Reactor模式(中文称作“反应器” “反应堆”等等,称其为Reactor模式);
Proactor模式(中文也称“主动器” “前摄器”,称其为Proactor模式)。
其中Reacto