翻译reactor-siemens.pdf
Reactor 模式:同步事件处理的对象行为模式
1 目的
该模式旨在应对服务请求,这些请求同时由多个客户端向应用程序提交。每个服务都包含若干方法,由独立的事件处理程序调度。在服务请求的解析和分配方面,异步事件解复用器起到关键作用,负责处理将请求按照对应的服务进行归属。
2 别名
调度程序,事件通知器
3 例子
以分布式日志记录服务的服务器为例,如图1所示。服务器通过事件驱动的方式,接收由客户端使用的日志记录服务在其分布式环境中记录的状态信息。状态信息通常包括错误通知、调试跟踪和性能报告。这些日志数据被发送至中央日志服务器,用于写入多种输出设备,包括控制台、打印装置、文件或网络管理数据库。
示例:日志服务器的协调过程
在日志记录服务中,日志服务器在处理由日志记录客户端发送的记录和连接请求时,需要高效管理这些请求。日志记录和连接请求有可能同时触发现多个句柄。句柄标识着由操作系统管理的网络通信资源。
以面向连接的协议如 TCP 为例,客户端需要先通过连接请求获取日志数据访问权限。日志服务器利用句柄工厂等待连接请求,监听客户端熟知的地址。一旦连接请求到达,句柄工厂便在客户端和服务器之间建立新连接,并创建表示连接端点的句柄,返回服务器。此后,服务器等待客户端传入的服务请求。一旦建立连接,客户端能够同时向服务器发送日志记录请求。服务器则通过连接的 Socket 句柄接收这些记录数据。
4 背景
在一个分布式系统的环境中,应用程序必须处理流程来自多个客户端的事件请求。
5 问题
改造工作负载调度算法和解复用机制时,需考虑以下挑战:服务器必需在等待其他请求到达时持续可用,避免无限地阻塞特定的事件源;有效地减少延迟,提升吞吐量,避免不必要的 CPU 使用;在并发策略代码层面简化设计;新的或改进的服务实施不应要求对通用事件解复用和调度机制产生过多的修改和维护负担;新平台的移植过程应当简便快捷。
6 解决方案
将并发事件请求解复用和调度的流程合并,统一管理特定事件处理程序。而且,将前端事件解复用调度外理与特定应用服务的具体实现分离。通过为每个应用程序提供的服务引入独立事件处理程序,可简化事件处理和调度。这些事件处理程序实现一个共同接口,并由启动调度器进行注册、删除和调度操作。同步事件解复用器负责等待并与事件处理程序互动,前者在检测到事件时通知调度器,依据调度器的指示调用对应事件处理程序的方法。
7 结构
Reactor 模式的主要实体包括:句柄(Handle)、同步事件解复用器(Synchronous Event Demultiplexer)、启动调度器(Initiation Dispatcher)、事件处理程序(Event Handlers)。句柄标识由操作系统管理的资源,如网络连接。事件处理程序的实现则专用于响应特定事件。此模式通过 OMTP 类图来展现各个实体的交互状态。
8 动态
Reactor 模式的动态交互主要分为常见的协作序列和特定场景流程。业务代码与各组件的动态互动通过交互图的形式表征。
1. 业务层代码执行事件注册、连接请求处理与数据记录等操作。
2. 连接请求和数据记录转变为具体操作预制。
3. 结合包含Boehm策略在内的活动参数,进行灵动操作消减。
4. 通过启动调度器调用事件处理程序执行业务逻辑。
通过上文调整,我们对 Reactor 模式的核心概念、结构和业务动态的语句进行了进一步的提炼和(streamlined),以供理解和解读。