ESB调研报告前言:关于企业应用集成(EAI)企业应用集成是集成应用之间数据和服务的一种应用技术。它解决无限的问题,解决方案也几乎没有穷尽。工程师们已经为这些解决方案的创建努力了数十年。现代EAI的模式通常要归功于GregorHohpe等人编著的《企业集成模式》,该书对集成解决方案共有的很多集成模式进行了分类和阐述。Hohpe等人列出了四种集成风格:1.文件传输:两个系统生成文件,文件的有效负载就是由另一个系统处理的消息。该类风格的例子之一是针对文件轮询目录或FTP目录,并处理该文件。2.共享数据库:两个系统查询同一个数据库以获取要传递的数据。一个例子是你部署了两个EAR应用,它们的实体类(JPA、Hibernate等)共用同一个表。3.远程过程调用:两个系统都暴露另一个能调用的服务。该类例子有EJB服务,或SOAP和REST服务。4.消息:两个系统连接到一个公用的消息系统,互相交换数据,并利用消息调用行为。该风格的例子就是众所周知的中心辐射式的(hub-and-spoke)JMS架构。这些风格迥然不同,因为没有一种解决办法能在任何情况下都良好运转。这导致整个中间件领域都在基于这些模式寻求可用的解决办法,通常被称为企业服务总线(ESB)。ESB是最终的中间人:它知道如何使用各种语言在各种协议上调解传递的消息。一、名词解释ESB全称为EnterpriseServiceBus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。二、ESB的主要功能主要有:操作系统、语言无关,例如应该支持.Net和Java应用的互操作;WS标准;用于集成遗留系统的适配器;基于某种标准的AAA(authorize,authenticateandaudit)模型即(授权,认证和审计)。Invocation——同步和异步的传输协议的支持、服务的定位和绑定Routing——静态和动态路由、基于内容路由、基于策略路由、基于规则路由Mediation——适配、协议转换、服务映射Messaging——消息处理、转换、增强Processchoreography——负责业务逻辑的实现Serviceorchestration——服务编排Complexeventprocessing——事件解释、事件关联、模式适配Otherqualityofservice——安全、可靠传输、事务Management——监视、audit、日志、计量、管理、BAM三、ESB的应用特性大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来越复杂、繁琐的企业级信息系统平台。面向服务体系架构(SOA)是能够将应用程序的不同功能单元通过服务之间定义良好的接口和契约联系起来。SOA使用户可以不受限制地重复使用软件、把各种资源互连起来,只要IT人员选用标准接口包装旧的应用程序、把新的应用程序构建成服务,那么其他应用系统就可以很方便的使用这些功能服务。支撑SOA的关键是其消息传递架构-企业服务总线(ESB)。ESB是传统中间件技术与XML、Web服务等技术相互结合的产物,用于实现企业应用不同消息和信息的准确、高效和安全传递。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务协调运作,实现不同服务之间的通信与整合。ESB在不同领域具有非常广泛的用途:电信领域:ESB能够在全方位支持电信行业OSS的应用整合概念。是理想的电信级应用软件承载平台。电力领域:ESB能够在全方位支持电力行业EMS的数据整合概念,是理想的SCADA系统数据交换平台。金融领域:ESB能够在全方位支持银企间业务处理平台的流程整合概念,是理想的B2B交易支撑平台。电子政务:ESB能够在全方位支持电子政务应用软件业务基础平台、信息共享交换平台、决策分析支撑平台和政务门户的平台化实现。三、ESB和MOM的异同MOM(MessageOrientedMiddleware)面向消息的中间件,指的是利用高效可靠的消息传递机制进行平台无关的数据交流,ActiveMQ就是属于MOMESB是在MOM的基础上发展起来的,是一个比MOM更成熟的EAI(EnterpriseApplicationIntegration)即企业应用集成的解决方案。在ESB中,服务可以被配置而不是编码。处理流程和服务能够透明地跨越整个服务总线。ESB提供了能够很好地跨越“集线器-插头”架构范围的高度分布式集成环境,并且清晰地分离了应用逻辑和路由数据变换之类的集成逻辑。一个ESB架构形成了一个消息集线器和集成服务的互连接性网格,具有一个彻底分布的集成网络的功能性和智能性。四、开源ESB产品ServiceMix(SM)产品简介:它是JBI规范的一种实现;包含很熟JBI组件。这些组件支持多种协议,比如JMS,HTTP,FTP,FILE等。同时也实现了EIP,规则和调度。SM也整合了其他的开源项目,比如Apache、ActiveMQCXF,ApaheCamel,ApacheODE以及ApacheGeronimo。优点:1、无缝集成CXF,ActiveMQ,Camel和ODE,因为ServiceMix,ActiveMQ,CXF,Camel都是FUSE的开源产品2、JBI的优势,组件BC,SE可以在任何JBI容器中直接运行,复用性强3、基于OSGi,具备OSGi的优势:模块化,热部署,易扩展缺点:1、基于JBI但JBI规范太复杂,已被主流中间件厂商抛弃,没有受到业界的青睐,前途未卜。2、架构复杂,由于JBI的复杂性所致,其架构并非轻量级,过多依赖XML的配置。如果要做进一步的总线上的扩展,则需要对源代码和例子进行较为深入的学习和研究。3、由于所有消息要进行标准化处理,即生成和解析XML文件,所以会导致性能下降;4、开发过程中需要实现框架特定接口(MessageExchangeListener)接收和处理上述标准消息,侵入性强(侵入业务系统)注:JBI(JavaBusinessIntegration)是SUN公司解决SOA的方案,但JBI没有得到IBM与BEA的承认(IBM与BEA等公司推荐SCA和SDO)。Mule产品简介:轻量级的消息框架和整合平台;基于EIP实现;核心组件UMO实现整合逻辑;支持20多种传输协议(File、FTP、UDP、SMTP、POP、HTTP、SOAP、JMS等)。并整合了许多流行的开源项目,比如Spring,ActiveMQ,CXF,Axis,Drools等架构设计优点:1、轻量级、灵活性、易用性,容易上手。2、Mule不需将消息转换成统一的格式,而只在需要时进行转换,提高了性能。3、它有非常广泛的传输器、路由器和转换器,且易于扩展。4、开发过程中无需关注Mule代码,只需通过配置即可将服务暴露,减少了侵入性。5、可以与现有ActivceMQ集成6、使用者最多,最活跃,版本更新快,提供与JBPM等工作流的良好集成7、提供的MuleStudio可进行图形化开发,功能非常强大缺点:1、后台管理模块和部分功能是商用的,非开源2、没有实现任何ESB规范注:EIP(EnterpriseIntegrationPatterns)企业集成模式OpenESB产品简介:包含了一组可插拔的组件容器,这些容器用于集成不同类型的IT资产(asset)。容器之间通过一种快速、可靠、内存中的消息总线连接起来,该消息总线叫作“标准化消息路由器”,同样它也是根据JBI来实现的。OpenESB可运行在由SUN支持的Glassfish应用服务中。同时SUN的NetbeansIDE为OpenESB提供了拖拉式的开发工具,这是其他开源ESB不可匹敌的,尽管Mule也提供了基于Eclipse的插件工具,但目前仍然不够强大。缺点:如果要对OpenESB进行按照自身的要求进行扩展则较为困难,除非对OpenESB的源代码进行全面的分析WSO2产品简介:WSO2是基于ApacheSynapse产品的,通过它可以在web服务,REST/POX服务以及遗留系统间连接,管理和转换服务交互。它还提供了一个基于AJAX的ESB管理控制台对其配置文件进行统计分析,管理(添加,删除以及修改等),和指定执行相应的配置文件。这在开源ESB中是非常少见的。架构设计优点:1、基于Axis,借助于Axis的特性,能非常好的支持ws规范,ws-*。因此非常适合WebService的场景。2、基于WSO2的Carbon平台,Carbon是WSO2的基础平台,它是一个OSGi框架,几乎WSO2的产品都能在上面无缝集成3、支持集群,集群中节点间的通信框架基于ApacheTribes(组通信框架),相关信息持久化在内嵌的Derby中,支持一个主节点和多个从节点2的都基于它。4、提供非常优雅的ESB管理控制台。5、支持流量控制,在单个ESB实例或者集群中,可以在服务级别配置流量控制。当请求数超过阀值时,ESB将被拒绝访问。6、支持数据缓存,集群中的各个ESB实例共享缓存的数据。当一个请求被ESB实例1处理完后返回响应信息,当再次向ESB实例1或者集群中其他的ESB实例发送该请求时,直接从缓存中取出原来的响应信息。缺点:1、架构不够清晰,显得有点臃肿、不简洁、不够优雅2、扩展性差,新增一个协议/transport非常困难3、组件比较凌乱,对多种协议(HTTP,WebService,JMS,FTP,EMAIL)的支持,部分依赖于Axis2,部分依赖于synapseJBossESB产品简介:JBossESB是基于JBoss公司的ESB产品Rosetta的。JbossESB将JbossMQ作为其消息层,将JBossrules为其提供路由功能,将jBPM为其提供服务编排功能;JBossESB是JBoss社区为面向SOA而提出的一个EAI系统平台;它提供了很多EAI本身所应具有的功能,例如业务流程监控、集成开发环境、工作流用户接口、业务流程管理、分布式计算架构以及作为应用容器的功能等。架构设计:缺点:相对于其它ESB而言,它的技术架构方案是最独立的。因为它除了支持J2EE标准外,对于JBI规范压根就不沾边;当然也就不存在JBI规范中的规范化消息路由、服务引擎开源轻量级ESBApacheCamel产品简介:ApacheCamel基于规则的路由以及媒介引擎,该引擎提供了一个基于POJO的企业应用模式(EnterpriseIntegrationPatterns)的实现,通过定义语言,可以用简单的JavaCode就可以写出一个类型安全并具有一定智能的规则描述文件。其核心的思想就是从一个from源头得到数据,通过processor处理,再发到一个to目的的.优点:1、与那种复杂的XML配置相比极大简化了规则定义开发。2、ApacheCamel提供了对Spring配置文件的支持。3、相当轻量级,官方最新版本带例子只有14M4、可以与现有的ApacheActiveMQ集成缺点:1、路由配置语言有点复杂需要时间来掌握2、只能应用于java项目3、不是一个应用容器SpringIntergration 产品简介:SpringIntegration中很多对RPC(远程过程调用协议)和消息的可用支持都以Spring框架的支持为基础。SpringIntegration配置文件中的所有内容仍是标准的Spring应用上下文,和通常的Springbean一样,它也受益于依赖注入和运行时可用的方面(Aspect)。使用SpringIntegration,应用上下文就是总