使用 ITCAM for SOA 监控 BPM Systems,第 3 部分: 使用 Service-to-Service 拓扑视图

使用 Service-to-Service 拓扑视图监控 WDPE 模型和运行时调用执行路径

Service-to-Service 拓扑视图通过拓扑图视图展示应用程序调用处理和执行路径。本文解释什么是 Service-to-Service 拓扑以及如何读懂 Service-to-Service 拓扑。对于只包含少数应用程序、流程和简单服务调用样式的小型系统,Service-to-Service 拓扑视图非常清晰易懂。但是,如果 WDPE 中有许多应用程序且调用很复杂的话,这个拓扑图就会变得非常复杂。本文还介绍一些过滤和重新组织 Service-to-Service 拓扑以使其变得更易于理解的最佳实践和方法。

Sen Wang, BPM 集成 QA, IBM

http://www.ibm.com/developerworks/i/p-swang.jpgSen Wang (Watson) 目前是 BPM Integration QA 团队成员。他对 WID、WPS、Message Broker、WSRR 和 FileNet 等 BPM 产品拥有丰富的经验,并且非常熟悉 Java/J2EE 开发。在担任现有职务之前,他从 2007 年开始在 SOA 设计中心担任实习生,拥有丰富的客户项目(如银行和保险项目)经验。



Yunjie Tan, BPM 集成 QA, IBM

http://www.ibm.com/developerworks/i/p-yjtan.jpgYunjie Tan (Jim) 是一位资深软件工程师,BPM Integration QA 团队设计师。他不仅非常熟悉 WPS/WID 产品,还是一位 UML、业务分析/建模以及软件方法专家。他还撰写了一本关于 UML 的中文畅销图书《Elephant--thinking in UML》。



Hua Cheng, 资深软件工程师, IBM

http://www.ibm.com/developerworks/i/p-hcheng.jpgHua Cheng (Ted) 于 2003 年加入 IBM,目前是位于中国北京的 IBM China Development Lab 的 Business Process Management Integration Quality Assurance 团队的负责人。他对 BPM 产品有广泛的经验,包括 WebSphere Integration Developer、Process Server、Modeler、Monitor 和 Adapters。他还精通 Java/J2EE 开发和产品测试。在担任目前的职务之前,他从事几个 WebSphere Process Server 开发和测试项目,担任过 WebSphere Process Server 组件所有者、开发负责人和测试负责人。



2010 年 7 月 19 日

什么是 Service-to-Service 拓扑?

我们可以使用一个示例来解释什么是 Service-to-Service 拓扑。在图 1 展示的示例场景中,一个 BPEL 组件调用 4 个服务序列来完成其工作。假定这 4 个服务序列是异构的,BPEL 组件必须通过不同的协议(如 SCA、JAX-RPC、JMS 和 HTTP)来调用它们。

图 1. 示例场景
本文使用的示例场景

以上示例场景展示了这样一种拓扑:BPEL 组件根据对应的导出使用各种导入方法(SCA 导入\JAX-RPC 导入\JMS 导入)调用服务。这个场景可以在 WID 中实现,然后将应用程序部署到 WPS (Websphere Process Server) 并运行。当 ITCAM for SOA 监控到这样的场景时,它将在 Service-to-Service 视图中展示该场景的拓扑,如图 2 所示。

图 2. Service-to-Service 拓扑视图
Service-to-Service 拓扑视图

在图 2 中,一个 “齿轮” 代表一个服务,齿轮之间的箭头表示调用事务,ITCAM for SOA 通过服务之间的事务建立服务之间的关系。由于这个图将服务之间的关系展示为拓扑,因此我们将其称之为 Service-to-Service 拓扑。

ITCAM for SOA 不仅能够显示事务之间的拓扑,而且能够显示流量数据等事务细节。图 2 中有许多齿轮,当您将鼠标移动到某个齿轮之上时,它将显示详细的流量数据信息,图 3 显示了一个事务的流量数据。

图 3. 一个事务的流量数据
一个事务的流量数据

限制拓扑图中的数据范围

这个拓扑视图默认显示 ITCAM for SOA 能够发现的所有关系,因此,如果涉及的应用程序很多,则图表将变得相当复杂。如果您通过打开 “ITCAM for SOA” Navigator 视图并选择 “Operational Flows” 工作空间来导航 Service-to-Service 拓扑工作空间,这个视图将显示 ITCAM for SOA 监控到的企业中的所有流的拓扑结构。我们将其称为 “All Operational Flows” 视图,参见 “图 4. All Operational Flows” 了解细节。在图 4 中,我们不仅看到如图 3 所示的拓扑,还看到来自 ITCAM for SOA 正在监控的其他系统的拓扑。

图 4. All Operational Flows
All Operational Flows

随着应用程序数量不断增加,“齿轮” 的数量也会迅速增加,因此,包含大量应用程序的复杂系统的拓扑图将变得越来越复杂。毫无疑问,您需要一种方法来在大量 “齿轮” 中找到您所需的部分,否则您将遇到麻烦。有许多方法可以限制这个视图中显示的数据范围,您可以利用它们轻松、准确地找到所需的内容。

要限制数据范围,您可以通过多种方法启动操作流视图,比如通过特定服务器节点或特定消息启动。拓扑中显示的元素将仅限于您启动的范围。

1. 通过特定服务器节点链接到 Service-to-Service 拓扑视图。

这种方法的目的是将拓扑范围限制到所选择的应用服务器,拓扑视图将显示所选服务器而不是整个企业中的 Service-to-Service 的关系。

如果您导航到某台机器对应的一个应用服务器节点(例如 AppMem1,参见 “图 5. 将数据范围限制到一个应用服务器”)并选择 “Operational Flow for application Server”,涉及的服务将限制到选中的应用服务器中发生的调用。“图 2. Service-to-Service 拓扑视图” 正是为 AppMem1 选择 “Operational Flow for application Server” 的结果,您可以对照 “图 4. All Operational Flows” 中显示的服务总图更清晰地理解该视图。

图 5. 将数据范围限制到一个应用服务器
将数据范围限制到一个应用服务器

2. 通过特定消息链接到 Service-to-Service 拓扑视图。

这种方法的目的是将拓扑限制到消息类型的范围。ITCAM for SOA 中有两种消息类型:Requester 和 Provider。您可以选择从 Requester 方或 Provider 方显示拓扑。

如果您导航到某个应用服务器节点(如 AppMem1)以查看 Performance Summary 视图,则该视图下方的面板显示 “Services Inventory”。位于表行的左边的链接图标可用于链接到 Service-to-Service 拓扑视图,参见 “图 6. 通过消息链接到 Service-to-Service 拓扑”。

图 6. 通过消息链接到 Service-to-Service 拓扑
通过消息链接到 Service-to-Service 拓扑

如果您选择一个 “requester” 行的链接,则该链接被称为 “Operational Flows for Application Server”。这个链接将导致生成一个 “只” 显示来自请求者端的消息的拓扑。参见 “图 7. 消息拓扑视图”,显示了选择来自请求者端的消息的拓扑。

如果在 ND 环境中调用服务,消息实例可以在任何应用程序成员上运行。不管消息在哪个应用程序成员上执行,ITCAM for SOA 都将显示该消息。例如,如果您从 AppMem1 链接消息拓扑视图,则 ITCAM for SOA 将以蓝色突出显示在 AppMem1 上执行的消息,以灰色显示其他消息以表明那些消息不在 AppMem1 上执行,但被 ITCAM for SOA 捕获。您可以阅读本系列文章的第 4 部分 “使用 ITCAM for SOA 监控并分析 ND 集群环境”,了解关于 ND 集群环境中的 ITCAM for SOA 的更多信息。

图 7. 消息拓扑视图
消息拓扑视图

如果您选择一个 “provider” 行的链接,则这个链接被称为 “Operational Flows for Operation”。这个链接生成的拓扑将 “只” 显示对 Services Inventory 表的这个行涉及 Service/Operation 的那些流。与 “requester” 视图类似,表示选中的 Service/Operation 的 “Operational Flows for Operation” 拓扑中的节点以蓝色突出显示,表明该节点被执行,而流中的其他节点以灰色显示,表明它们没有被执行。

通常,我们不建议用户通过 “All Operation Flows” 路径到达 Service-to-Service 拓扑工作空间,建议以这两种方法之一启动它们,以便将拓扑限制到用户更容易监控的特定项目(Application Server 或 Service/Operation)。


使用 Service-Group 来定制受到关注的服务

默认情况下,Service-to-Service 拓扑视图将显示所有受到监控的操作。但是,客户可能对服务图表的某个部分而不是整个拓扑更感兴趣。例如,在 “图 2. Service-to-Service 拓扑视图” 中,该拓扑拥有 4 个分支。假定客户只关心第一个分支,原因是该分支与处理高风险申请人有关。

在某些情况下,客户可能想在一个视图内显示不相关的服务。例如,在一个 Web 采购场景中,“客户订单产品” 和 “物流交付产品” 是两个不相关的流程并在不同的系统中运行,但客户想同时显示它们以从头到尾跟踪整个采购状态。

为实现这一点,我们可以使用 “服务组”。在 Service-to-Service 拓扑工作空间中,我们可以选取关注的操作节点,然后在右键单击弹出菜单上选择 “Manage Service Groups” 命令,然后在下一个对话框中定义服务组。图 8 展示如何定义服务组。

图 8. 定义服务组
定义服务组

图 9 中显示的 Manage Service Group 面板将弹出来,我们可以为选中的服务定义一个 “High risk verfication”。

图 9. 管理服务组
管理服务组

定义一个服务组后,您可以从 “Service Groups Summary” 视图检查该服务的状态。要访问服务组视图,转到 “ITCAM for SOA” 导航器,然后从弹出菜单中选择 “Service Groups Summary” 命令。参见图 10 中的 Service groups summary 视图,该图表的右半部分显示了定义的服务组的状态。

图 10. Service groups summary 视图
Service groups summary 视图

我们刚才定义的服务组的状态在这个摘要视图中显示出来。在这个视图中,我们可以快速监控所关注的服务的状态。如果服务组出现问题,则它有以下 4 种状态:

  • Fatal
  • Critical
  • Warning
  • Unavailable

通过定义服务组,我们可以以逻辑方式对服务编组,从而满足业务需求。这不仅允许客户在 IT 层面监控企业,还允许客户在业务层面监控企业。


使用 SystemContext 修饰符避免 Service-to-Service 拓扑出现碎片

在存在非 SCA 绑定时,您可能会发现拓扑视图中的关系会被打破,这样拓扑看起来十分零碎,因此难以理解。参见 “图 11. 破碎的拓扑视图”,它所展现的场景与本文提出的第一个场景类似(其服务拓扑如图 2 所示),它包含没有应用 SystemContext 修饰符的非 SCA 绑定。

图 11. 破碎的拓扑视图
破碎的拓扑视图

图 11 中有一些碎片,这使人很难理解相关服务之间的关系。之所以出现这样的碎片,原因是关系数据来自事务,而事务需要系统上下文来了解调用源和目标。但是,默认情况下,系统上下文通过绑定传播,只有 SCA 绑定会传播系统上下文,而其他绑定不会传播。因此,当系统上下文缺失时,ITCAM for SOA 无法知晓调用源和目标来构建关系,因此在拓扑视图中出现了碎片。

为避免出现这种碎片并显示完整的关系,System Context 必须被传播出去。从 WPS 6.2 发布版开始,System Context 传播通过非 SCA 绑定(包括 JMS/MQ/JAX-RPC/JAX-WS/HTTP/JCA 绑定)支持。由于 System Context 被设计为在默认情况下不会被传播,因此我们需要在导入绑定中添加 “Propagate system context” 来启用传播。

1. 使用 WID6.2.0.1

WID6.2.0.1 已经支持通过 GUI 添加 “Propagate system context” 修饰符。在 WID assembler 视图中,选择导入组件,然后更改 “Propagation” 属性,将 “Propagate system context” 设置为 true,参见 “图 12. 在 WID6.2.0.1 中启用系统上下文传播”。

图 12. 在 WID6.2.0.1 中启用系统上下文传播1
在 WID6.2.0.1 中启用系统上下文传播

设置好这个修饰符后,ITCAM for SOA 就能够从系统上下文中得知调用源和目标,从而在请求者和提供者之间建立必要的关系。在图 13 中,您可以看到碎片已经消失,请比较图 11 中的拓扑视图。

图 13. 碎片消失
碎片消失

2. 使用 WID 6.2

如果用户使用 WID 6.2,我们强烈建议用户升级到 WID 6.2.0.1。否则,由于 WID 6.2 不支持 “Propagate system context”,用户必须通过修改 Import 文件手动添加修饰符。

这里有一个手动支持 “Propagate system context” 的例子。您需要找到要传播系统上下文的 *.import 文件并通过一个文本编辑器打开它,然后在 <esbBinding></esbBinding> 标记对中添加字符串 “<scdl:bindingQualifier xsi:type="scdl:IsTargetSCA" value="true"/>”,参见以下代码段中的粗体显示文本。这种方法与在 WID 6.2.0.1 中使用 GUI 方法启用 “Propagate system context” 等效。

<?xml version="1.0" encoding="UTF-8"?>
<scdl:import xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:Binding4="http://tSessionAsyncLib/testInterface/Binding4" 
xmlns:ns1="http://tSessionAsyncLib/testInterface" 
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" 
xmlns:webservice="http://www.ibm.com/xmlns/prod/websphere/scdl/webservice/6.0.0" 
xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0" 
        displayName="targetWSImport" 
name="targetWSImport">
  <interfaces><interface xsi:type="wsdl:WSDLPortType" portType="ns1:testInterface"/> 
            </interfaces>
<esbBinding xsi:type="webservice:WebServiceImportBinding" 
endpoint="http://localhost:9080/tSessionBusinessContextTargetWeb/sca
                                /testInterfaceExport1" 
port="Binding4:testInterfaceExport1_testInterfaceHttpPort" 
service="Binding4:testInterfaceExport1_testInterfaceHttpService" 
        userContextPropagationEnabled="true">
  <scdl:bindingQualifier xsi:type="scdl:IsTargetSCA" value="true"/>
</esbBinding>
</scdl:import>

结束语

在本文中,您了解了什么是 Service-to-Service 视图以及如何使用 Service-to-Service 拓扑视图来监控 WDPE 运行时。有许多最佳实践可用于简化图表并快速找到感兴趣的服务内容,比如限制拓扑显示范围,定义 Service-Group 或启用 SystemContext 修饰符传播以避免图表碎片。对于客户来说,使用 ITCAM for SOA 来轻松有效地监控他们的 BPM 系统是非常有帮助的。

参考资料

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, Tivoli
ArticleID=501124
ArticleTitle=使用 ITCAM for SOA 监控 BPM Systems,第 3 部分: 使用 Service-to-Service 拓扑视图
publish-date=07192010