IBM ESB产品之间的比较(一)

日期: 2008-12-07 作者:马国耀 来源:TechTarget中国 英文

  本文首先介绍了企业级应用程序的发展以及ESB的定义;随后,分析了ESB在SOA解决方案中所起的作用,并比较介绍了三款ESB产品在支持实现一个ESB解决方案中所起的作用。

  企业服务总线ESB的介绍

  企业应用的发展概述

  在介绍企业服务总线之前,有必要花一些笔墨来介绍企业应用架构的发展和变迁。企业级应用架构的发展经历了以下几个阶段:

  ·独立应用系统
  ·EAI阶段
  ·SOA阶段

  独立应用阶段

  20世纪60到70年代,企业应用处于独立应用系统阶段,当时的企业应用是一种用来替代重复性劳动的简单设计,其目的是用计算机代替孤立的,体力性质的工作环节,将相关联的企业信息或数据管理起来。这些系统大部分是独立的系统——有独立的数据库、应用服务器、用户界面。因此有时候这类应用也叫“竖井型”的应用。

  但是,随着业务和信息的不断扩展,独立应用系统渐渐不能满足企业对IT的需求,表现在大量的信息冗余,因为在建立一个新的应用的时候需要重新建立一套数据库;功能的重新设计,相似的功能存在于多个系统中;例如,客户信息在一个公司中可能有多个拷贝分别存在于多个数据库中,不同时期建立的应用系统所使用的技术也会不同。对于获取客户资料这样的功能,必然存在于多个系统中,而且在不同的系统中其实现方式可能是Java/J2EE、Delphi、C/C++。

  EAI阶段

  20世纪80到90年代,一些公司或集成商意识到应用集成的价值和必要性。EAI是一种将多个不同平台、用不同方案建立的异构的应用集成的一种技术和方法。它的目标包括以下几个方面:各个分离的系统间的相互通讯,消除信息孤岛,实现信息的共享。从功能的角度来看,EAI包括信息接收、转换、翻译、路由、传播和业务流程管理。从架构上看有两种方式:Hub/Spoke方式和Bus方式。

  图1所示的Hub/Spoke结构使用一个中心代理(Hub)和多个适配器(Spoke)将Hub和应用连接起来。适配器负责将应用的数据格式转换成Hub可以理解的格式,Hub将数据再转换成目标系统可以理解的格式,并执行消息的路由。Hub/Spoke方式的弊端在于只有一个代理中心,当连接的应用种类增加或者消息量增大时,代理中心的性能将成为整个系统的瓶颈,在可扩展性方面也存在着一定的问题。

  图1. Hub/Spoke结构的EAI集成
 
  图2所示的Bus结构使用一个中心总线,应用程序通过Adapter将消息发送给总线,总线负责消息的路由,接受方的应用程序也有自己的Adapter来转换接受到的消息。Bus结构和Hub/Spoke结构的最大区别在于在Bus结构中,Adapter位于应用程序中,而Hub/Spoke结构中,Adapter由Hub来统一管理。这样在Bus结构中,加入一个新的应用变得很简单,可扩展性得到了很大的提高,但是应用程序方的负担加重了。

  图2. Bus结构的EAI集成
 
  SOA阶段

  SOA将应用资源看成一个个独立的,自包含并良好定义的服务,通过这些服务的组装,编排可以产生新的应用。每一个服务可以完成一个独立业务功能,并且不依赖于业务上下文或者其他服务的状态。服务的定义是标准的且被广泛支持的,比如Web Service。在SOA的架构中,人们都用标准的方式来封装自己的服务,使得任何一个客户端程序都可以容易的和后台系统实施连接。而ESB是SOA架构中的一个核心基石,在几乎所有的SOA架构中,都将ESB放在核心的位置。图3是IBM SOA Reference architecture,从中我们可以看出ESB在一个SOA架构中的地位,对该图的详细解释不在本文介绍范围之内,有兴趣的读者可以参考一下IBM SOA专区的相关文章。

  图3. IBM的SOA参考架构
 
  下面我们来介绍一下ESB。

  什么是ESB?

  什么是ESB?ESB严格来说不是某一个产品,而是一种框架,设计模式。不同的提供商对ESB的理解也各有不同。

  “ESBs are essentially integration systems, not SOA systems. SOA is about tearing down application silos, but integration systems reinforce those silos. […] an ESB is especially good for bridging to legacy applications, and therefore it is a useful component in a services infrastructure”

  —-Anne Thomas Manes, Research Director with Burton Group

  “An Enterprise Service Bus (ESB) is a distributed middleware system for integrating enterprise IT assets using a service-oriented approach.”

  —-Ron Ten-Hove , Sun Microsystems and JBI Spec Lead

  “A Web-services-capable infrastructure that supports intelligently directed communication and mediated relationships among loosely coupled and decoupled business components.”

  –Gartner

  IBM对ESB是这样描述的:

  “An enterprise service bus (ESB) is a pattern of middleware that unifies and connects services, applications and resources within a business. Put another way, it is the framework within which the capabilities of a business’ applications are made available for reuse by other applications throughout the organization and beyond. The ESB is not a new software product — it’s a new way of looking at how to integrate applications, coordinate resources and manipulate information ”

  从IBM的立场来说,ESB不仅仅是一个概念,而是一种中间件模式;它不是某个产品,而是一种全新的集成应用,协调资源和操纵信息的框架。

  下面来介绍ESB或可以称为ESB的中间件产品保护一些特征,有些是必须的,有些是可选的:

  ·连接性

  ESB必须提供一种支持服务交互的桥梁,它必须支持多协议(protocol)之间的连接。不仅要提供对消息和面向事件的中间件的支持,还要提供和现有EAI技术的连接。连接性是ESB不可缺少的特征之一。

  ·服务交互

  服务交互可以理解为ESB的一个目的之一,ESB作为SOA架构的核心,必然要支持服务的交互,要在服务的请求者和提供者架起一个坚实的桥梁,让服务的请求者和提供者只需要关心各自的业务逻辑,而不需要在发布和消费服务的环节花很大力气。服务交互也是ESB的必备特征。

  ·集成

  集成的概念是对于系统而言的,ESB不仅要能集成那些很容易封装服务的系统,也要集成不能方便地封装服务的系统,例如SAP, ERP, CRM, Siebel等EAI系统、遗留系统。集成也是ESB的核心特征之一。

  ·消息处理

  在集成的过程中,必须要面对的是消息处理,在不同的应用系统中,消息的描述格式是不一样的。在集成环境中,必须要提供一种统一的格式来处理系统间的交互,从ASBO(Application Specific Business Object)到GBO(Generic Business Object) 之间的互转是ESB的核心特征之一。

  ·管理

  对于一个具有ESB特征的产品,管理也是一个重要的方面。例如,当一个服务从一个地址切换到另一个地址,在结构等不发生任何改变的时候,ESB产品应该提供一个方便的途径适应这种改变。

  ·QoS

  对于服务交互来说,QoS也是一个重要的特征,比如针对不同的服务请求者提供不同质量的服务响应。有些服务的请求需要在事务中完成,有些服务的交互需要保证其可靠性。一个ESB产品应该提供给开发者定义QoS的接口。

  ·安全

  安全的必要性不言而喻,系统和系统之间的交互必然需要认证,授权,加密,签名等安全性。一个优秀的ESB产品应该提供可靠的,可灵活配置的安全支持。

  IBM的ESB产品

  IBM有三款ESB产品:WebSphere ESB(WESB),WebSphere Message Broker(WMB),DataPower。这三款ESB产品都提供了ESB所必备的特征,但是它们各有侧重,WESB主要构建与WebSphere Application Server之上,侧重于对标准协议和消息的支持,更适合于J2EE,Web-Service为主要特征的集成环境;WMB提供了一个高级的ESB,它构建于WebSphere Message Queue之上,提供了百种以上协议的连接和数据格式的转换机制。Datapower是一款比较新的ESB产品,除了提供必备的ESB的特性之外,Datapower更侧重于安全。众所周知,在XML的环境中,安全对于性能的影响是巨大的,Datapower给企业ESB提供了强大的安全保障。下面分别介绍这三款ESB产品。

  WebSphere ESB

  从图4中可以看出ESB构建与WAS ND之上,它使用了WAS ND及WAS对于安全,用户注册表,事务,消息引擎的支持,在其之上增加了对服务集成、消息流处理、建模以及ESB编程模型的支持等等。从图中还可以看出WebSphere Process Server是构建与WESB之上,并扩展了服务编排和流程管理方面的支持。

  图4. WESB在WAS产品线的位置
 
  下面介绍在WESB上实现一个SOA ESB解决方案上的以下九个方面的特点,这九个方面的特点来源于上文中介绍的ESB的特性,或者特性的细化:

  ·消息转换

  WESB所处理的消息为XML格式的数据,对于非XML结构的数据WESB不能处理。对于XML结构的数据,在WESB的消息流中数据以SMO形式存在,WESB可以对XML消息树的内容进行修改,包括改变某个节点的内容,增加新的节点以及删除某个节点等等。

  ·支持的协议

  WESB支持符合SOA标准的协议,比如SOAP/HTTP、SOAP/JMS、WSDL V1.1、UDDI V3.0,WebSphere MQ等。也就是说WESB目前只支持SOAP方式来描述服务,传输协议可以是HTTP、JMS记忆原生的WebSphere MQ的连接。对于多传输协议的基础,建议使用MB来做ESB的解决方案,参考MB的介绍部分。

  ·消息路由

  消息的路由在WESB中有良好的支持,开发环境WID中提供了一个节点专门来负责消息路由,WID也提供了良好的对路由规则定义的开发支持,开发人员可以很容易的定制负责的路由规则。若要实现动态路由的功能,则需要和一个服务的存储单元中来动态的查找服务,目前WSRR是一款优秀的提供该功能的工具。WESB从V6.1开始提供了Endpoint lookup节点来支持WSRR的集成,简化了开发过程。如果要实现简单的动态服务路由的功能,则可把服务的定义存放在数据库中,在WESB中通过DB lookup来查找服务的 Endpoint, 然后注入到消息流中,WESB V6.1之前的版本就已经支持与数据库的集成。

  ·对Web Service的支持

  WESB天生运行在J2EE的环境里面,对Web Service有着天然的支持。

  ·事件处理

  在消息流中,我们需要跟踪消息各节点的状态,以满足统计和出错处理的要求,在WESB中,通过CEI机制来处理消息。

  ·与遗留系统的集成

  WESB通过Adapter与遗留系统进行集成,支持IBM Websphere Adapter和JCA Adapter,通过JCA我们就可以将遗留系统里面的服务和数据通过标准(SCA/SDO)的形式整合到集成环境中。

  ·安全方面的支持

  WESB没有对安全做特殊的处理,使用WAS的安全支持来实现ESB的安全。

  ·性能

  WESB是一个纯Java的应用,运行效率上有些限制,同时可以处理的消息流的数量级为几十到几百之间。

  ·开发和部署

  开发工具是WID,一个ESB的消息流在WID中被称为Mediation Module,它是一个J2EE应用,开发和部署工作无异于普通的企业级应用。

  Message Broker

  WMB是IBM的应用整合中间件,是IBM ESB架构重要的产品组成部分之一,用于企业应用整合领域。WMB目前的版本是6.1.2,它的前身是MQSeries Integrator。本质上看,WMB是MQ的衍生产品,它使用MQ作为内部通信的机制。然后,WMB提供的接入方式远不止MQ一种,包括JMS、HTTP(S)、SCADA等常见的新一代接口规范。在消息转化过程中,WMB能够识别XML、C结构、SOAP等各种自定义的消息格式。

  如图5所示,WMB可以分为开发环境和运行环境两大部分。其中开发环境由开发工具(Toolkit)和调试环境(Rational Agent Controller)组成,运行环境是WMB核心,也叫Broker Domain,由三部分组成,配置管理器(Configuration Manager)、用户名服务器(User Name Server)和代理(Broker)。

  图5. WMB组件

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 总线技术究竟该不该用?

    曾几何时企业服务总线(ESB)被视为企业IT的核心。今天,不仅ESB受到了比被废弃还要糟糕的攻击,若干开发趋势似乎对更简单的消息总线也发起了质疑。