通过企业服务总线组合面向服务的体系结构和事件驱动的体系结构

现今的业务应用程序很少完全独立运行。它们需要彼此连接,以便创建集成解决方案,从而为组织带来价值。面向服务的体系结构(Service-Oriented Architecture,SOA)和事件驱动的体系结构(Event-Driven Architecture,EDA)是处理复杂集成挑战的两个不同范例。组织如何选择更好的方法来满足其需求呢?实际上他们并不必选择:企业服务总线(Enterprise Service Bus,ESB)允许同时实现 SOA 和 EDA 概念。

Jean-Louis Maréchaux (jlmarech@ca.ibm.com), IT 架构师, EMC

作者照片Jean-Louis Maréchaux 在加拿大担任 IBM Business Consulting Services Group 的 IT 架构师。他的兴趣和专长包括 J2EE 体系结构、Web 服务技术、SOA 和工程流程 (IBM Rational® Unified Process)。您可以通过 jlmarech@ca.ibm.com 与他联系。



2006 年 8 月 08 日

引言

为了适应市场变化,各个组织都倾向于将重点放在灵活性和响应能力上。IT 挑战实际上通常使用恰当的体系结构和技术来支持此业务远景。早期的活动是为了将独立应用程序拆分为可调用的子例程,但远程对象调用和消息传递处理的发展改变了这一点。

而在最近,增加对组织中现有资产的重用(可反过来提高投资回报)和集成异类应用程序以形成一致业务解决方案开始变得非常关键了。而这促进了 SOA 和 EDA 的广泛采用。这两个不同的设计范例均以最大化独立于应用程序的服务(可提供 IT 适应能力和效率)的重用为目标。但构建和部署大型集成解决方案始终是一项比较困难的任务。而这正是 ESB 的用武之地,因为它简化了任务关键型应用程序的灵活而可靠的体系结构(SOA 和 EDA)的实现。


面向服务的体系结构

SOA 是一个体系结构概念,其中所有的功能或服务都使用描述语言加以定义,且各自的接口均可通过网络进行发现。此类接口采用独立方式定义,不受服务实现所在的硬件平台、操作系统和采用的编程语言的影响。

SOA 的最重要优势之一是,它可以脱离软件开发中的孤立方式(在此方式中,每个部门构建自己的系统,而完全不考虑组织中的其他人已完成了哪些东西)。这种“竖井 (Silo)”方法将会导致低效且开销巨大的情况出现,可能会多次开发、部署和维护相同的功能。SOA 基于在整个组织范围内共享的服务组合,并提供了对现有资产的有效重用和集成,如图 1 中所示:

图 1:“竖井”方法与 SOA 方法的对比
竖井与 SOA 的对比

SOA 基于方便的请求/应答机制,如图 2 中所示。服务使用者将通过网络调用服务提供者,且必须等待,直到提供者一端的操作完成。

图 2:SOA 中的请求/应答机制
SOA 中的请求-应答

表 1 对 SOA 解决方案的基本特征进行了总结:

表 1:基本 SOA 特征
功能描述
松散耦合的交互服务的调用独立于其技术和位置。
一对一通信一个特定服务一次由一个用户调用。通信是双向的。
基于用户进行触发控制流由客户机(服务使用者)发起。
同步应答将以同步方式发回给使用者。

事件驱动的体系结构

在 2003 年,Gartner(请参阅参考资料)引入了一个新术语,用以描述基于事件的设计范例:事件驱动的体系结构 (EDA)。EDA 定义了一种用于进行设计和实现应用程序和系统的方法,其中的事件在各个分解的软件组件和服务间进行传递。EDA 并不会替代 SOA,而只是对 SOA 形成补充。虽然 SOA 通常更适合请求/响应交换环境,但 EDA 引入了一些长时间运行的异步进程功能。而且,EDA 节点可发布事件,且并不依赖于所发布的服务的可用性。它真正地实现了同其他节点的分离。EDA 有时也称为“事件驱动的 SOA”。

EDA 使用消息传递来在两个或多个应用程序进程间进行通信。此类通信是由“事件”发起的。触发器通常与某种业务情况对应。该事件的所有订阅者将随后得到通知,从而激活,如图 3 中所示:

图 3. 事件驱动的体系结构中的发布/订阅机制
EDA 中的发布-订阅

表 2 对 EDA 的基本特征进行了总结:

表 2:基本 EDA 特征
功能描述
分离的交互事件发布者并不会意识到事件订阅者的存在。
多对多通信采用发布/订阅消息传递,一个特定事件可以影响多个订阅者。
基于事件的触发器控制流由接收者确定(基于发布的事件)。
异步通过事件消息传递支持异步操作。

企业服务总线

定义

企业服务总线(Enterprise Service Bus,ESB)将事件驱动的方法和面向服务的方法结合使用,以简化业务单元的集成,从而在异类平台和环境间建立联系。ESB 充当允许不同应用程序进程之间进行通信的中间层。部署到企业服务总线的服务可以由使用者或事件触发。它同时支持同步方式和异步方式,可促进一个或多个参与者之间的交互(一对一和多对多通信)。因此 ESB 可提供 SOA 和 EDA 范例的所有功能(请参阅表 1表 2)。

企业服务总线是一种体系结构模式,可以采用许多不同的产品在组织内实现,并组装起来作为联合总线。现在有越来越多的供应商开始提供完整的产品来满足企业集成需求。例如 IBM WebSphere® Enterprise Service Bus(请参阅参考资料)就提供了集成总线功能,可以有效地连接应用程序(利用 Web 服务和 J2EE 等标准)。

ESB 服务

目前并没有定义 ESB 的正式标准,但通常都认为 ESB 至少必须提供传输事件中介 服务,以帮助集成大型异类应用程序。

传输服务 必须确保通过企业总线互连的业务流程间的消息正确交付。传输还包括基于内容的路由功能。这意味着可以将消息定向到不同的目的地。作为任务关键型环境的一部分,这些服务采用事务处理方式,得到了相应的安全保证,并会对其进行监视。

事件服务 提供事件检测、触发和分发功能。这些功能与事件处理概念相关,事件处理是一种用于分析和控制事件驱动的体系结构 (EDA) 中相互关联事件组成的复杂系列。事件驱动的范例并不是新概念。不过,它们促进了行业的发展,代表着复杂事件处理 (Complex Event Processing) 的核心概念(请参阅参考资料)。

中介服务 用于满足两个目的。首先,中介可确保提供必要协议,以满足集成异类系统的需求。由于两个不同的服务并不一定使用相同的传输协议,而中介服务可负责从一个协议到另一个协议的转换,因此可以进行此类通信。协议转换对于业务事务的所有参与服务是透明的。

图 4:协议中介——由 ESB 进行协议转换
协议中介

其次,中介提供了转换任何消息内容的可能性。这是业务集成的关键服务。它可确保任何进程都能理解通过总线传输的数据。而且,中介允许对内容进行扩展,以使用附加信息丰富消息内容。内容转换由总线负责进行管理:此过程对于任何参与服务都是透明的。

图 5:内容中介——消息内容由 ESB 进行转换和扩展
内容中介

让我们举个例子来说明内容中介的好处。假定有一个名为 Yummy Inc. 的公司提供在线订餐服务。为了对其向客户提供的菜单进行计划,他们需要验证其供应商提供的食品的可用性和价格。为了获得此信息而发送的消息的典型结构包括:产品标识、数量和目标配送日期。

图 6:可用性消息的结构
典型的可用性消息

当然,Yummy Inc. 及其供应商并未采用相同的方式来表示这些信息。例如,两个系统上的日期格式就不相同。而且,供应商需要使用配送位置信息,因为 Yummy Inc. 并不是其唯一的客户。ESB 中介服务可以将所传输消息的信息进行转换和扩展,以便目标服务接收到其所需的所有信息,如图 7 中所示:

图 7:ESB 中介的内容转换和扩展
ESB 中介示例

通过利用之前定义的关键技术服务,ESB 可提供灵活的连接基础设施,用于集成松散耦合的应用程序。它同时支持 SOA 和 EDA 范例。

图 8:使用企业服务总线连接各个服务
企业服务总线

ESB 的好处

通过利用其内部服务,ESB 解决方案可带来各种好处。就本质而言,它简化了连接各种相异应用程序的任务,从而最终提高了业务的灵活性,并提供了以下功能:

  • 基于标准的连接
    作为很多异类应用程序间的集成中枢,ESB 必须提供很多不同的集成技术,并对大量供选择的标准技术加以利用。
    消息传递集成通常支持 Java™ Message Service (JMS) API,而企业信息系统的连接则是由 J2EE Connector Architecture (JCA) 提供的。为了确保 Web 服务互操作性,ESB 支持 JAX-RPC 编程模型。不同的 ESB 组件间的集成可以通过 Java Business Integration (JBI) 规范进行标准化(参考资料)。
  • 渗透性集成
    ESB 具有渗透性本质,因为它可以跨不同的部门、业务单元甚至业务合作伙伴进行应用程序集成。而且,它的核心体系结构原则还可以促进构建于异类开发环境上的应用程序之间的通信。例如,ESB 解决方案可以在不同的编程语言(J2EE、C++ 或 .Net)之间起到桥梁作用。
  • 可靠集成
    ESB 体系结构模式可提供系统安全性、可伸缩性或可用性。企业服务总线使用 SOA 和 EDA,可同时提供同步和异步功能。传输服务可确保可靠交付和事务完整性。因此,ESB 的每个特征都对其稳健性进行了增强,可尽可能减少集成或联合解决方案失败的风险。

结束语

企业服务总线是一种体系结构模式,可通过传输、事件和中介服务促进和简化业务集成。它可连接各个异类节点并作为中介传递其间的所有通信和交互,这些节点可分散在面向服务的体系结构(同步一对一方法)和事件驱动的体系结构(异步多对多方法)中。ESB 是目前处理集成挑战的最有效方法,是可提供最大业务灵活性和不同应用程序间的高效连接技术解决方案。

参考资料

学习

获得产品和技术

讨论

条评论

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, WebSphere
ArticleID=152888
ArticleTitle=通过企业服务总线组合面向服务的体系结构和事件驱动的体系结构
publish-date=08082006