级别: 中级 Jiangwei Lv, 软件工程师, IBM
2008 年 7 月 31 日 在本系列的第 1 部分中,您了解了应用程序响应度量(Application Response Measurement,ARM)和使用 IBM® Tivoli® Composite Management for Response Time Tracking 来调试同步场景。下面将介绍多种服务组件体系结构(Service Component Architecture,SCA)调用模式和相关的 ARM 观察点,以更好地了解 ARM 事务与 SCA 调用之间的关系。本文是该系列中的第 2 部分,其中还将介绍一些有关如何使用 Tivoli Composite Management for Response Time Tracking 来调试异步场景的示例。
引言
在 SCA 世界中,异步调用是一种广泛使用的模式。在这些模式中,调用者可以:
- 发起调用而不知道结果(单向)。
- 稍后自己检索结果(延迟响应)。
- 由目标调用来检索结果(回调)。
IBM WebSphere® Process Server V6.1 中的 ARM 事务反映了 SCA 调用中的详细事务,这些事务可以用来描述客户端和目标服务的行为。
在本文中,您将了解多种 SCA 调用模式和相关的 ARM 观察点,并查看一些有关如何使用 Tivoli Composite Management for Response Time Tracking 来调试异步场景的示例。
WebSphere Process Server V6.1 中的 SCA 调用模式
在图 1 至 6 中,根据不同的调用、操作和实现类型显示了许多模式。下面首先让我们对这三个术语进行进一步分析:
同步和异步调用
SCA 调用模式表示调用者的行为。SCA 调用同时支持同步和异步模式。同步调用意味着调用者或客户端在服务或被调用者返回之前不会继续,这是大多数编程语言中广泛使用的模式。由于 SCA 中的服务是松散耦合的,异步调用还是一种非常重要的模式,并提供了三种不同的具体模式:
-
异步单向调用:客户端不等待来自目标的任何返回消息;操作在调用后直接返回,并且调用就算完成了。
-
异步延迟响应调用:客户端在调用后继续工作,稍后再查询其先前发出的调用的结果。
-
异步回调调用:客户端在调用后继续工作,就像在延迟响应调用中一样,但是结果将由目标在调用客户端的回调方法时进行通知。
同步和异步实现:
这是关于目标的风格。当目标是以异步方式实现的,并且客户端需要结果(使用请求-响应操作)时,实际结果将插入在除该目标返回的第一个消息以外的某个消息中。特别是,在 WebSphere Process Server V6.1 中,Java™ Message Service (JMS) 绑定、长时间运行的业务流程、接口中介等等都是以异步方式实现的。在 Java 中,您可以同步或异步地实现目标。
单向和请求-响应操作:
单向和请求-响应是 Web 服务描述语言(Web Services Description Language,WSDL)中定义的原语。它们的区别在于端点是否在接收消息后发送相关消息。这里可以将其看作是客户端是否在调用服务之后需要或检索执行结果。
WebSphere Process Server V6.1 ARM 监视观察器支持所有的 SCA 调用模式。图 1 至 6 提供了 ARM 观察点和事务以及不同 SCA 调用模式中的 SCA 消息流之间关系的技术描述。开始和停止观察点已标记出来,以显示记录时间戳的时间。状态在 stop() 方法中进行报告,tran<number> 是事务的标识符。(有关与 ARM 相关的主题,请参阅本系列中的第一篇文章。)
请在表 1 中查看事务的含义和沿袭。
表 1. 图 1-6 中的事务及其沿袭
| 事务 | 含义 | 父事务 |
|---|
| tran1 | 从客户端视图中请求传输 | (无父事务) |
|---|
| tran2 | 从目标视图中请求传输 | tran1 |
|---|
| tran3 | 结果检索(延迟响应)和回调(回调) | tran2 |
|---|
这些关系图中涉及到三方:
-
调用者:发起调用的组件
-
服务:执行所请求的服务的组件
-
SCA:表示容器,其处理调用者和服务之间的请求或响应
图 1.同步实现之上的同步调用(单向操作)
图 2.异步实现之上的同步调用(单向操作)
图 3. 同步调用(请求-响应操作)
图 4. 异步单向调用
图 5. 异步延迟响应调用
图 6. 异步回调调用
使用 IBM Tivoli Composite Application Manager for Response Time Tracking 来调试 WebSphere Process Server V6.1 中的异步 SCA 调用
本部分介绍如何调试异步单向、延迟响应和回调调用。
该场景非常简单,如图 7 所示。Stand-alone Reference 通过典型的同步调用来调用组件 Invoker,此模式与第 1 部分中的示例相同。组件 Invoker 通过异步调用(分别为该示例中的单向、延迟响应和回调调用)来调用以同步方式实现的组件 InvokeeSync,这些调用就是下面要重点注意的调用。
图 7. 异步调用场景
要生成报告,只需按照本系例的第 1 部分中演示的过程进行操作。这里的环境先决条件、安装和数据收集过程与前一示例相同。
对于拓扑报告,您仍然可以获取高级事务视图,如图 8 所示。
图 8. 高级事务视图
如果展开分组的事务,您可以看到与图 1 至 6 类似的事务。
下面让我们看一下调用的每个细分视图。
异步单向调用
在此场景中,当 Invoker 与 InvokeeSync 之间的调用是异步单向调用时,您将获得如图 9 和 10 所示的细分视图。
图 9. 异步单向调用事务表
图 10. 异步单向调用细分视图
前两个事务是 Stand-alone Reference 与名为 Invoker 的组件之间的事务,其模式已在本系列的第 1 部分中描述过了。最后两个事务是 Invoker 与 InvokeeSync 之间的事务,并具有单向调用模式。
下面重点注意最后两个事务栏。将它们与图 4 中的事务做一下比较;它们与 tran1 和 tran2 匹配。第一个事务是客户端的事务,并紧跟在发起调用之后结束;第二个事务稍后在目标端开始,并在目标服务已完成所有的本地任务之后结束。
因此在高级范围内,如果您希望获取某个组件的本地时间而不是详细的事务,您可以绘制类似于图 11 的本地时间视图。这里的蓝色阴影是 Invoker 组件的本地时间,红色阴影是 InvokeeSync 组件的本地时间。
图 11.同步实现之上的同步调用(单向操作)
用于划分时间栏的规则与第 1 部分中的规则相同:
但是异步调用没有同步调用那么简单。表 2 阐明了该公式中的时间含义,该含义同时适用于同步和异步场景。
表 2. 公式中的时间含义
| 在该组件的本地处理中所花的时间加上在该组件前面的 SCA 运行时中所花的时间。对于图 12,(t2-t1)-(t4-t3) 是组件 B 的本地时间。 |
| 在该组件前面的 SCA 运行时中所花的时间加上在该组件中所花的时间(包括下游服务的等待时间)。在该细分视图中,此时间表示包含该组件的所有事务的生存期。对于图 12,(t2-t1) 是组件 B 的响应时间。 |
| 与调用者交互的某个下游事务的时间。注意:在异步场景中,这是在下一个事务而不是下一个组件中所花的时间。(请查看另一个单向调用示例,如图 13 所示。这里,Invoker 在调用下一个组件之后,还有其他工作要做。您可以看到蓝色阴影与红色阴影之间的重叠,这在单向调用中是非常典型的,表示 Invoker 不等待 InvokeeSync 完成;相反,它将继续按自己的计划运行。 |
图 12. 响应时间和本地时间
图 13. 异步单向调用中的本地时间阴影之间的重叠
对于异步实现之上的同步调用(单向操作)场景(请参见图 2),其细分视图与此场景中的细分视图类似,可将其视为同步调用的特例。
异步延迟响应调用
当 Invoker 与 InvokeeSync 之间的调用是异步延迟响应调用时,您将获得如图 14 和 15 所示的细分视图。
图 14. 延迟响应调用事务表
图 15. 异步延迟响应调用细分视图
图 15 所示的最后两个事务在延迟响应调用中,这两个事务与图 5 中的 tran1 和 tran2 类似。遵循单向调用示例中给出的相同规则,图 16 显示了本地时间图形。
图 16. 异步延迟响应调用本地时间分析
异步回调调用
当 Invoker 与 InvokeeSync 之间的调用是异步回调调用时,您将获得如图 17 和 18 所示的细分视图。
图 17. 异步回调调用事务表
图 18. 异步回调调用细分视图
在回调调用中,存在三个事务(请参见图 18 中的最后三个事务):
- 在客户端用于发出调用的事务
- 在目标端用于执行的事务
- 在客户端被调用并接收结果的事务
这三个事务与图 6 所示的事务类似。
在相同规则的指导下,您可以绘制本地时间图形,如图 19 所示。
图 19. 异步回调调用本地时间分析
结束语
现在您可以识别事务并获取所有 SCA 调用类型中每个组件的本地时间图形评估信息。
正如在本文章系列的第 1 部分中所提到的,WebSphere Process Server V6.1 提供了多种监视 SCA 调用的方法。在这些选项中,ARM 是调试事务响应时间的理想方法。通过使用恰当的实现,例如 Tivoli Composite Application Management for Response Time Tracking,可以生成各种各样的报告,并使得通过 SCA 调用来进行的调试能够观察运行状况和确定瓶颈或故障点。
参考资料 学习
获得产品和技术
讨论
关于作者  | 
|  | Jiangwei Lv 是 IBM China Development Laboratory 的 WebSphere Business Integration 团队的一名软件开发工程师。 |
对本文的评价
|