级别: 中级 王 雪 (xuewang@cn.ibm.com), 软件工程师, IBM 中国软件开发实验室 SOA设计中心 刘 昱, 软件工程师, IBM 中国软件开发实验室 SOA方案中心 黄 若波, IBM 中国软件开发实验室 SOA 设计中心, 高级软件工程师
2007 年 7 月 30 日 本文从体系结构的角度系统地介绍了 IBM Tivoli Composite Application Manager for SOA(ITCAM for SOA) 和 IBM WebSphere Service Registry and Repository (WSRR) 的集成架构,详细说明了集成模块 ITCAM for SOA Event Handler 的技术细节,以及动态地在 IBM WebSphere Service Registry and Repository 中记录和存储服务性能元数据的方法。
引言
作为Service-oriented architecture(SOA)解决方案中的一个重要组成部分,服务注册中心提供了服务元数据的存储和管理。2006年9月 IBM 推出了 具有里程碑意义的服务注册中心产品——IBM® WebSphere Service Registry and Repository(WSRR), 该产品具有服务注册、查找、管理、增值和监管的功能。同时期,IBM的其他软件产品也推出了若干与WSRR进行集成的工具和方法,例如服务元数据的动态更新、服务生命周期的管理以及服务运行时的动态选择等。本文介绍 的 ITCAM for SOA Event Handler集成了IBM® Tivoli Composite Application Manager for SOA(ITCAM for SOA)和WSRR,通过侦听ITCAM for SOA发出的事件,动态地在WSRR中添加和更新服务性能元数据。这些服务性能元数据可以和企业服务总线(ESB)结合使用,实现服务的动态选择。
本文首先介绍ITCAM for SOA Event Handler的系统架构及组成模块,然后深入剖析 Tivoli EIF 事件映射规则和处理策略。通过本文,读者可以深入理解该集成模块的功能以及如何利用它来实现服务的管理和监管。
对于本文的读者,需要预先了解SOA、 ITCAM for SOA以及WSRR的基本概念。
背景简介
IBM® WebSphere Service Registry and Repository(WSRR)是一个集中存储服务元数据的服务注册中心和数据仓库。这里的服务是一个非常广义的概念,既包括传统的使用 SOAP/HTTP 协议的 Web Service,也包括 SOA 领域定义的使用其他交互协议的服务。WSRR 中的服务元数据既可以是基于标准的服务的描述,如 WSDL、XML Schema、WS-Policy 或者 SCA 文件,也可以是在此基础上扩展的元数据类型,如属性、关系和类别。通过这些服务元数据,服务使用者就可以了解服务的功能、服务的使用方法和服务的使用条件等信息。关于 WSRR 的详细信息,可以参考WSRR 信息中心。
ITCAM for SOA 作为一个服务监控工具,可以对运行在多个不同平台上的服务进行发现、编目、监控和数据收集,帮助用户全面地管理 SOA 的运行环境。首先在 ITCAM for SOA 中设定服务的监控条件,当这些监控条件被满足时,ITCAM for SOA 就会自动生成一些事件。这些事件既可以在 IBM Tivoli Enterprise™ Portal 中被处理和显示,也可以被发送到其他的事件处理系统中处理。
本文介绍的集成模块 ITCAM for SOA Event Handler 就是一个 ITCAM for SOA 的事件处理系统。它接收和处理 ITCAM for SOA 发出的消息事件,即时地更新 WSRR 中对应的服务性能元数据,从而使得应用程序可以在运行时利用这些元数据动态地选择服务和管理服务的生命周期。
集成架构
本章主要介绍集成模块 ITCAM for SOA Event Handler 的系统架构。如图1所示,该集成模块由三个主要部分组成:事件处理器(Event Interpreter)、配置管理器(Configuration Manager)和消息适配器(Adaptor)。图1不仅显示了集成模块各组成部分,而且表明了集成模块与 ITCAM for SOA 和 WSRR 之间的交互关系。
图1. ITCAM for SOA Event Handler体系结构
在说明各组成模块的功能之前,我们首先介绍一下 Situation 的基本概念。在 ITCAM for SOA 中,服务的监控条件是通过 Situation 来设定的。Situation决定了Tivoli监控代理如何对事件进行识别和响应。一条 Situation 由名称和相应的阈值组成。 Situation 的阈值既可以是某一个固定值,也可以是一个范围值,例如,名称为 Response Time的Situation的阈值为5秒,名称为 Message Size 的 Situation 的阈值为" > 500字节并且 < 5000字节"。ITCAM for SOA 预先定义了一些 Situation,例如Response Time、Message Size等。用户既可以使用这些预定义的 Situation, 也可以自定义适合用户需求的 Situation。 当被监控的服务违背了预先设定的 Situation 时,ITCAM for SOA 就会报警并触发一个Tivoli Event Integration Facility(EIF)事件。EIF事件承载了一系列和报警事件相关的名字-值对。
在ITCAM for SOA Event Handler 的三个组成模块中,消息适配器( Adaptor )提供了接收报警事件的JAVA接口。 从设计的角度来看,这样的接口有利于ITCAM for SOA Event Handler 的扩展,使其可以接收来自除了ITCAM for SOA以外的其他监控系统的事件。
消息适配器(Adaptor)接收到事件后,将事件处理的工作交给事件处理器(Event Interpreter)。事件处理器从配置管理器(Configuration Manager)中获取事件映射规则,根据事件映射规则来进行服务匹配和事件处理,并在 WSRR 中对相应的服务元数据进行实时地更新。本文在稍后将详细介绍事件映射规则和事件处理策略。
配置管理器(Configuration Manager)负责记录和管理 ITCAM for SOA Event Handler 的配置信息,是 ITCAM for SOA Event Handler 集成模块中一个非常重要的组件。用户通过配置管理器内嵌的 Web UI 来交互地配置选项,生成配置文件。主要的配置选项包括 WSRR 和 ITCAM for SOA的通信信息、安全访问信息、EIF 日志信息、以及最为重要的事件映射规则。通常地,ITCAM for SOA Event Handler 只处理那些与服务性能相关的事件,例如违反 Response Time 设定的阈值而触发的事件,但是用户也可以根据需求自行设定和配置,用户的配置被记录在事件映射规则表中。表1详细说明了 ITCAM for SOA Event Handler 的配置选项,并在本文附录中附有一个详细的配置文件示例(config.xml)。
表1. Configuration Manager配置选项
| 名称 | 说明 |
|---|
| ITCAM Listener | ITCAM 侦听端口,包括协议域,指定了ITCAM消息事件的端口 | | WSRR Location | WSRR 地址,包括 endpoint,userID 和 Password 域。其中endpoint是WSRR Web服务的连接地址,UserID和Passoword域指定的用户名和密码用来安全访问该Web服务。 | | Event Map | 事件映射规则表,每条规则用 TECEvent 域表示,包括 EventID,WSRRPropertyName, WSRRReceivedPropertyValue,WSRRClearedPropertyValue 子域。 | | Web Service Security | WSRR 安全访问信息,包括TrustStore, TrustStorePassword, KeyStore 和 KeyStorePassword 域。 | | EIF Logger | EIF 日志信息, 包括LogFileName, LogLevel, TraceFileName和TraceLevel等域。 |
事件映射规则
事件映射规则是集成模块 ITCAM for SOA Event Handler 中最重要的部分。对于每一个需要 ITCAM for SOA Event Handler 处理的事件,在事件映射规则表中都有一条事件映射条目与之对应存在。
在事件映射表中,EventID 是事件对应的唯一标识。通常地, 该值与ITCAM for SOA 中定义的 situation 的名称一致。
ITCAM for SOA Event Handler 接收到待处理的事件之后,需要对事件进行处理,将事件中包含的服务性能信息以自定义属性的形式写到 WSRR 相应的服务描述中。所以,在事件映射规则表中的 WSRRPropertyName 定义了自定义属性的名称。
在介绍WSRR 中自定义属性的值之前,我们先介绍一下ITCAM for SOA中定义的三种事件状态。在ITCAM for SOA Event Handler 接收到的待处理的事件的描述中, 除了包含触发该事件的 Situation 以外,还包括situation status 域。situation status 域表明了事件的状态, 用来确定ITCAM for SOA Event Handler 对事件处理的方式。一般地,situation status 具有Y, N, 和P三种值, 分别对应:
-
Y 状态事件,它被触发当且仅当 situation 中所定义的监控条件被满足。
-
N 状态事件,它被触发当且仅当 situation 中所定义的监控条件不满足。
-
P 状态事件,当 situation 被停止的时候,该事件被触发,这意味着不会继续监控该situation 定义的条件。
由上可知, 一般地,每一个 situation 都对应着一个 Y 状态事件和一个 N 状态事件。为了使ITCAM for SOA Event Handler 能够同时处理同一 Situation 的 Y 状态事件和 N 状态事件, 在事件映射规则表中,WSRR的自定义属性值应包含有 Received 类型和 Cleared 类型。Received 类型定义了对 Y 状态事件的处理,而 Cleared 类型定义了对 N 状态事件的处理。无论是 Received 类型还是 Cleared 类型,都有三种处理方式来决定自定义属性的值:一种是 Property Value, 意味着在 ReceivedValue 域中设定的事件域的值将作为该自定义属性的值;一种是 Static String , 意味着在 ReceivedValue 域中设定的静态字符串将作为该自定义属性的值;一种是 Removal , 意味着在 WSRR 中删除该属性。
图2给出了一个示例, 在这个例子中定义了三条映射规则,这三条规则对应的situation分别是:MessageSize_610, ResponseTimeCritical_610, 和 ResponseTimeWarning_610。 其中,MessageSize_610 规则在WSRR 中对应的自定义属性名称为avg_msg_length。对于Y 状态事件它采用 avg_msg_length域的值作为在 WSRR 中对应的自定义属性的值; 对于 N 状态事件采用 Removal 方式删除该属性。ResponseTimeWarning_610 则采用Static String 作为它接收Y 事件和 N 事件时的自定义属性值。
图2. 事件映射规则示例
当接收到某一事件,ITCAM for SOA Event Handler 首先从事件映射规则表中读出该事件定义的规则。 基于这些规则,对不同的服务采取不同的处理策略。
事件处理策略
?在 WSRR 中添加自定义的属性和关系,将丰富服务的元数据。在通过事件映射规则获取服务性能信息在 WSRR 中添加的方式和方法后,ITCAM for SOA Event Handler 需要在 WSRR 中找到该服务,并将服务性能信息更新到服务的元数据中。ITCAM for SOA Event Handler 可以处理 Web Service 和 SCA Service 两类服务。对于 Web Service,ITCAM for SOA Event Handler 使用 port name 和 port namespace 来识别 WSDLPort,并将性能信息添加到 WSDLPort 上。而对于 SCA Service,则将性能信息添加到 SCAExport 上。由于 SCA Service 有两种绑定方式:SCA Binding 和 Web Service Binding, 对于前者,ITCAM for SOA Event Handler 使用 module name 或者 export name 和 export namespace 来识别 SCA export, 对于后者,则直接利用 export-binding 作为查询元素。
应用示例
图3给出了一个示例。首先,服务提供者将Web Service A 和 SCA Service B 分别部署到 WebSphere Application Server 和 WebSphere Process Server 上,并安装 ITCAM for SOA 的监控代理,使得其性能可以被ITCAM for SOA所监控。然后将Web Service A 和 SCA Service B 的描述注册到 WSRR 中。之后在 ITCAM for SOA 中配置和定义 Situation, Response_Time < 300 ms。这样,在服务运行的过程中, ITCAM 监控代理侦听到服务性能信息违反了预先设定的条件,Web Service A 的响应时间是 9000 ms, 而 SCA Service B 的响应时间是 500 ms。 ITM Server发出 EIF 事件ITCAM for SOA Event Handler 则接收来自ITM Server 的 EIF 事件,根据不同的映射规则和事件处理策略, 并服务的性能数据添加到WSRR中。
图3. 事件处理示例
结束语
本文重点介绍了 WebSphere Service Registry and Repository 和 ITCAM for SOA 的集成,深入探讨了集成模块 ITCAM for SOA Event Handler 的体系架构和技术细节。从本文中,读者可以深刻理解该集成模块的工作原理。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| Sample configuration file | config.zip | 1 KB | HTTP |
|---|
参考资料
作者简介  | 
|  |
王雪 是IBM软件开发中心SOA设计中心的工程师,是WebSphere Service Registry and Repository 中国开发团队的一员。她的联系方式是xuewang@cn.ibm.com. |
 | 
|  |
刘昱 是IBM软件开发中心SOA方案中心的工程师,具有多年J2EE的开发经验。 |
 | 
|  | 黄若波,IBM 中国软件开发中心软件开发经理,2000 年加入 IBM,拥有丰富的 J2EE 项目的开发经验,包括 e-Commerce, Grid, Cluster management, SOA 项目的设计以及开发工作。 |
对本文的评价
|