点到点事务用例模型

项目的体系结构设计阶段的可重用资产

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


最新推荐

Java 应用开发源动力 - 下载免费软件,快速启动开发


级别: 初级

Stephen Watt (swatt@us.ibm.com), IT 架构师, IBM

2006 年 8 月 08 日

本文提供了点到点事务模型的一个用例。由于这些模型具有相当不错的通用性,因此该用例可以作为可重用资产,用于记录涉及到使用这些模型的系统的项目的体系结构设计阶段所需的信息。

引言

此用例描述数据如何在使用点到点事务 模型的系统间流动。点到点模型描述仅由两个端点共享的事务。系统可能会有很多点到点合作伙伴;此处的主要区别在于,当出站事务从一个系统发出时,它会以一个目标系统作为目的地。这与发布/订阅 模型(也称为事件驱动的体系结构)刚好相反,在发布/订阅模型中,出站事务可能会以一个或多个目标端点为目的地。经过中介的点到点模型意味着存在用于帮助将数据从源端点交付到目标端点的中介(如集成中心或企业服务总线)。此文档并不会提供各个用例的概述和最佳实践。有关提供帮助理解和创建用例的更多信息的链接,请参阅参考资料

参与者

用例中的参与者带有一般性意义,可以为触发系统组件内的业务事件(将会导致发起点到点事务)的任何用户或系统。

组件

系统:处理参与者生成的事件;在某些用例中(如本文中的用例)可能需要与其他系统进行通信,因此要使用系统接口。系统还可以接收其他系统生成的事件,对其进行处理并生成响应。在某些情况下,可能需要在生成响应前与用户进行沟通。

系统可以作为请求的发出者或处理者和响应的提供者。充当请求发出者角色时,称为源端点或原始端点。充当请求处理者和响应提供者时,则将其称为目标端点。

系统接口:公开系统的接口,以便能向其他系统发送和从其接收事务业务事件。在面向对象的分析和设计方法中,系统接口通常被视为契约。在此用例中,系统接口组件是契约之类内容的实现。

中介:提供系统接口与其他系统接口进行通信的方法——不过其最初的设计目的并不是如此。在此用例中,中介可帮助两个系统通过其系统接口进行通信。Gang of Four 所著的《Design Patterns》一书对中介模式进行了详细的介绍。

触发器

用户触发源系统上的业务事件,而该事件又触发点到点的事件流,如下所述。描述业务事件时,并不特指特定的业务事件类型。例如,任何类型的业务事件——从购买订单到问题票证交换——都可以作为触发器来生成请求,以使用经过中介的点到点事务模型。

事件流

本部分描述在经过中介的点到点事务模型中可能遇到的各种流:

同步点到点

  1. 系统生成请求,并将其传递给系统接口,以便进行交付。
  2. 源系统接口对请求进行恰当打包,并将其以同步方式交付给目标系统接口,目标系统接口将随后使源连接保持打开状态,并将请求以同步方式传递给目标系统进行处理。
  3. 目标系统处理请求。
  4. 目标系统生成响应,并将其传递给系统接口。
  5. 目标系统接口使用保持打开状态的连接将响应以同步方式传递回源系统接口。
  6. 源系统处理响应。

图 1. 同步点到点模型
同步点到点模型

异步点到点

  1. 系统生成请求,并将其传递给系统接口,以便进行交付。
  2. 系统接口对请求进行恰当打包,并将其以同步方式传递给目标系统接口。
  3. 目标系统接口接收请求,并向原始系统接口发送传输响应,以告知已成功接收到请求,正在对其进行处理,即将在另一个连接上发送异步响应。原始系统接口和目标系统接口之间的同步请求连接随后关闭。
  4. 目标系统处理请求。
  5. 目标系统生成响应,并将其传递给系统接口,以便进行交付。
  6. 目标系统接口对请求进行恰当打包,并将其以同步方式传递给原始系统接口。
  7. 原始系统接口接收请求,并向目标系统接口发送一个传输响应,以告知是否成功接收到相应数据。
  8. 源系统处理响应。

图 2. 异步点到点模型
异步点到点

经过中介的同步点到点

  1. 系统生成请求,并将其传递给系统接口,以便进行交付。
  2. 系统接口对请求进行恰当打包,并将其以同步方式传递给中介。
  3. 中介随后将原始连接保持打开状态,并将请求以同步方式传递给目标系统的系统接口。
  4. 系统接口随后将到中介的连接保持为打开状态,并将请求以同步方式传递给目标系统,然后在相同连接上等待响应。

    此时,源系统接口、中介和目标系统接口均保持其连接的打开状态,以等待对其原始请求的同步响应,从而形成了一个扩展的同步连接链。

  5. 目标系统处理请求。
  6. 目标系统接口使用保持打开状态的连接将响应以同步方式传递回中介。
  7. 中介使用保持打开状态的连接将响应以同步方式传递回源系统接口。
  8. 源系统处理响应。

图 3. 经过中介的同步点到点模型
经过中介的同步点到点

经过中介的异步点到点

  1. 系统生成请求,并将其传递给系统接口,以便进行交付。
  2. 系统接口对请求进行恰当打包,并将其以同步方式传递给中介。
  3. 中介接收请求,并向原始系统接口发送传输响应,以告知已成功接收到请求,正在对其进行处理,即将在另一个连接上发送异步响应。原始系统接口和中介间的同步请求连接随后关闭。
  4. 为了将原始请求传递给将提供异步响应的目标系统,中介将向目标系统的系统接口发送另一个同步请求。
  5. 目标系统接口以同步方式响应中介,告知已成功接收到请求,正在对其进行处理,即将在另一个连接上发送异步响应。中介和目标系统接口间的同步请求连接随后关闭。
  6. 目标系统处理请求。
  7. 目标系统生成响应,并将其传递给系统接口,以便进行交付。
  8. 系统接口对请求进行恰当打包,并将其以同步方式传递给中介。
  9. 中介接收请求,并向系统接口提供传输响应,告知已成功接收到请求,正在对其进行处理。系统接口和中介间的同步请求连接随后关闭。
  10. 中介将同步请求发送给原始系统的系统接口,在其中提供了(对原始请求的)业务响应。
  11. 系统接口接收请求,并向中介发送一个传输响应,以告知是否成功接收到相应数据。
  12. 源系统处理响应。

图 4. 经过中介的异步点到点模型
经过中介的异步点到点

伪同步点到点流

  1. 系统生成请求,并将其传递给系统接口,以便进行交付。
  2. 系统接口对请求进行恰当打包,并将其以同步方式传递给中介。中介将保持此连接为打开状态,以便稍后在此连接上以同步方式传回其接收到的任何响应。
  3. 为了将原始请求传递给将提供异步响应的目标系统,中介将向目标系统的系统接口发送另一个同步请求。
  4. 目标系统接口以同步方式响应中介,告知已成功接收到请求,正在对其进行处理,即将在另一个连接上发送异步响应。中介和目标系统接口间的同步请求连接随后关闭。
  5. 目标系统处理请求。
  6. 目标系统生成响应,并将其传递给系统接口,以便进行交付。
  7. 系统接口对请求进行恰当打包,并将其以同步方式传递给中介。
  8. 中介接收请求,并向系统接口提供传输响应,告知已成功接收到请求,正在对其进行处理。系统接口和中介间的同步请求连接随后关闭。
  9. 中介随后将获取接收到的响应,并在保持打开状态的原始同步连接上传回此响应(请参阅第 2 步)。系统接口接收请求,并向中介发送一个传输响应,以告知是否成功接收到相应数据。
  10. 源系统处理响应。

图 5. 伪同步点到点模型
伪同步点到点模型




回页首


终止输出

在下列情况下,点到点事务流可能失败。

  1. 源系统接口无法连接到中介:
    这可能意味着中介已脱机或存在网络问题而不能连接。这将导致流失败,需要进行重试。
  2. 中介无法连接到目标系统接口:
    这可能意味着目标系统接口已脱机或存在网络问题而不能连接。这将导致流失败,需要进行重试。
  3. 中介无法处理源系统接口的请求,并生成了一个 Negative 传输响应发送回该系统接口:
    这可能是由于中介无法理解此消息或由于消息导致了中介内的处理错误而造成的。此事务不应进行重试,而且应该对问题进行进一步分析。
  4. 目标系统接口无法处理来自中介的请求,并生成一个 Negative 传输响应发送回中介:
    这可能是由于目标系统接口无法理解此消息或由于消息导致了目标系统接口内的处理错误而造成的。此事务不应进行重试,而且应该对问题进行进一步分析。
  5. 目标系统接口处理来自中介的请求,但使用 Negative 业务响应进行响应:
    由于目标系统在处理消息内的数据时出错而导致业务事件失败。

务必要注意,耐久性和持久性不在此模型的范围内,但可能也会在特定场景中进行调用,以确保恰当的事务完整性。例如,中介从源端点接收要交付到目标端点的请求时,通常都会为消息提供持久性服务,以便在程序系统出现故障时不会丢失消息。同样,如果中介无法达到目标端点,则中介通常会提供耐久性服务来帮助确保消息将最终交付到目标位置。将耐久性和持久性模型合并到中介的一个好办法就是使用企业服务总线。





回页首


前提条件

事务中涉及的所有组件都具有连接性,可发送和接收其预期的消息以及生成和处理这些消息。

Post 条件

考虑到事务完整性,通常的 post 条件是,事务现在已提交(如果点到点消息交换成功)和已失败(如果点到点消息交换失败)。

用例关联

发布和订阅事务模型(请参阅用例后面的说明)。

结束语

此系统用例可以用于说明点到点事务模型的概念及其在项目的体系结构设计阶段的变化。

致谢

非常感谢 Rao Korimilli、Lenny Loving、Steve Sargent、Stewart Hyman、Erin Boyd 和 Jay Smith 在清楚表述这些概念时提供的帮助并对本文进行了审阅。





回页首


参考资料

学习

讨论




回页首


关于作者

Steve Watt

Stephen Watt 在德克萨斯州奥斯汀实验室工作,是 Global TIM Competency for IBM Integrated Operations 内的中间件集成解决方案方面的一名软件架构师。Steve 对 WebSphere、Web 服务和企业服务总线进行了广泛的研究,并花了大量的时间来研究如何通过新兴的标准、产品和技术来创建、自动化或改进服务、网络和集成设施管理流程。在为 IBM 工作之前,Steve 有几年的时间在中东从事咨询工作,并为美国和南非的 startups 公司工作。Steve 是《Professional .NET Programming for J2EE Developers》和《The ASP Maintenance Handbook》(Wrox Press) 的合著者,并在 ASPToday 和 IBM developerWorks 发表过数篇文章。