企业应用集成的工具 - 消息代理中间件


(来源:http://www.tongtech.com)

消息代理中间件的作用

  消息代理(Message Broker)是一种在数据源与目的地之间移动数据使信息处理流畅的软件技术,数据源与目的地包括已有的应用、文件、数据库、对象(如CORBA、COM)、硬拷贝输出及Web客户端等。消息代理技术实现之后的产品形式就是一种中间件。
  作为面向消息的中间件(MOM)的一部分,消息代理中间件在企业应用集成(Enterprise Application Integration ,EAI)中的作用日趋明显。分布式环境下,业务单位四处散布,包罗万象的应用运行在不同的软、硬件平台上,消息代理中间件主要提供应用集成所必须的数据的递送、收集、翻译、过滤、映射和路由等功能,屏蔽不同的硬件平台、数据库、消息格式、通信协议之间的鸿沟与差异,提供应用到应用之间的高效、便捷的通信能力。
  消息代理最典型的应用环境包括:

  • 有许多程序,特别是混合多种语言;
  • 多个数据源以及/或异构的数据库;
  • 应用的生命周期期望在3年以上
  • 处理的高吞吐量,复杂的系统设计
  • 在客户/服务器天地中存在"老的"或者已有的应用
  • 行将进行系统的增强、增加和修改
  • 复杂的应用间的通信既有企业内部的通信,又有企业间的通信

  Gartner Group根据调查统计,企业在开发应用的过程中,30%-40%的费用都浪费在开发和维护与企业业务逻辑无关的各种接口上。随着企业或企业间应用数量上的增加,应用间的通信接口日益增多,不同的平台、不同的语言与技术所带来的难度成倍的增长。1996年,Gartner Group就预测:消息代理中间件由于降低了企业/机构内部应用的复杂交互,将变得和数据库管理系统、数据仓库一样重要。
  归纳起来,基于消息代理中间件实现应用集成的主要理由有以下几个方面:

  • 通过点对点的应用接口完成应用的集成复杂度高,花费大,严重地限制企业的灵活性。消息代理中间件如同一个软件的HUB,连接需要交互的各个应用系统,减少了应用系统接口的数量、相互的技术依赖性。
  • 应用与应用间传递的数据需要转换,传递需要按照优先级、实时地或批处理的方式进行。消息代理中间件提供与各种资源的接口、数据转换能力和消息处理能力,高效地实现应用之间的消息传递。
  • 复杂的业务处理逻辑带来应用间、应用与人之间交互的复杂性,要求提供一种支持流管理、处理智能化开发的简便性。新一代的消息代理中间件以"商件(businessware)"形式,提供商务逻辑层开发能力。
  • 集成应用的体系结构必须能适应业务逻辑、组织机构的变化,最大程度地减少对已有应用的修改。消息代理中间件构造了一个基于消息的代理骨干,其基于API的适配器以及包装程序完全适应这一要求。


消息代理中间件的基本特征

构件化的结构
   一个典型的消息代理中间件的基本结构见下图:

消息代理中间件一般不是单一引擎,通常由一组构件组成,基于构件的结构是消息代理中间件的关键特征。构件化的结构能充分利用SMP和MPP技术,以增加吞吐量,同时也使环境是可伸缩的,可以根据需要配置不同构件。多个消息代理引擎分布在多处但可以通过一点统一管理。
  可恢复性、易于管理、灵活性等对关键软件结构的要求同样适合于消息代理中间件。


具有数据转换设施
  消息代理中间件的核心是一个消息的路由程序,它接收和分发消息并基于预先定义好的消息处理流确保转发给正确的应用。消息的路由程序通常能执行多段的路由("基于HUB的路由"),对于一个单个的消息,可以根据消息的源、目的地、类型等定义许多个处理段或对象。对象可以包括消息的转换、数据的格式转换、查询数据库、记录日志和定时传送等。应用间的互通可以是一对一、一对多或多向的。
  消息代理中间件的核心还包括一个单独的通信与消息传递协议层,实现组织内部或组织间的实际的网络通信,有一个专门的消息格式库保存所有的消息定义,并提供建造和维护组织内部和组织间消息类型的工具。路由程序最终通过这一层实现消息的接收与分发。
  消息代理中间件的数据转换设施负责在应用之间对传输的数据进行转换,提供数据转换需要的API。数据的规范化(normalization)或称数据的标准化,是使数据在交换过程中转换成标准状态的技术。消息代理中间件有内置的数据规范化工具,替换一个应用时,不会影响到与其它数据交换伙伴的应用接口。
  消息代理中间件的数据转换可以是实时的、接近实时的或批处理的。批处理方式基于文件到文件的数据转换方式。消息代理中间件有一个实时的请求/应答设施来执行同步的关键任务消息的处理,通过一个消息队列机制提供接近实时的数据转换。消息代理中间件管理传递各个服务应用的并发路径,即使在企业需求最大时也能提供最佳的性能。

可靠高效的通信
  消息代理中间件支持数据报和可靠传输("确保传输")通信方式。可靠传输通信是基于消息队列机制的,发送和接收消息分别通过不同的消息队列。对应用来讲,可靠传输确保"一次并且只有一次"的递送。消息的传递可以选择压缩或/和加密传输方式。
  消息代理中间件有消息优先级支持,高优先级的消息不必在队列中等待,可以优先得到处理。
  消息代理中间件支持基于内容的消息路由,消息产生后按类型归类时,路经就确定了,消息代理能够根据消息的内容把消息路由到不同的目的点。
  消息代理中间件能管理复杂的处理流,可以协调需要一系列复杂处理过程的交易处理,通过可配置的计时器和告警器处理异常的情况。消息代理中间件内部的规则机制与可配置的计时器和报警器一起,确保交易处理的时效性,交易跟踪程序存储和显示检测单个交易的状态。

多样的管理能力
  消息代理中间件的管理是分层次的,分别对应操作员和管理员。运行界面提供了一个对消息代理运行的高层次的视角,保证消息代理的正常运作。操作员可能不知道消息代理中间件运作的细节,管理员则可以控制消息代理中间件的每个方面,管理界面是给管理员支持操作员用的。
  多个消息代理分布在多处但可以通过一点获得消息代理引擎的企业级的单一的视点,进行统一的管理,可以基于SNMP进行处理监控,可以使用浏览器运行管理系统

丰富的应用开发环境
  消息代理中间件的开发环境主要涉及数据转换和与资源的接口的构造。消息代理中间件提供灵活、高效的结构化的消息处理脚本语言(4GL)和其它面向对象的设计工具,支持基于对象的、3GL或是脚本语言来进行数据的转换。
  消息处理脚本语言包含流控制、例外处理、数据抽取(基于SQL等)机制,能够灵活地构造高效的数据转换、校验、翻译和条件逻辑。消息代理中间件提供便利的数据库访问接口,直接访问流行的关系型数据库和3GL接口
  消息代理中间件的对象控制系统,提供企业级的开发与部署,允许大量的开发人员通过共享数据库并发地工作,从而最大限度地实现可重用性。基于对象的开发结果,通常是消息代理中间件所支持的脚本开发语言。脚本语言编译后生成的伪码可以在任意一个脚本语言环境(开发工具)中运行,保证了开发结果的可迁移性
  应用测试可以离线进行,不必挂接到消息代理中间件上,引入新的应用接口或/和转换规则,也不需要停下消息代理中间件的运行。
  消息代理中间件的另一个主要功能是与各种形式的信息资源接口,如果一个消息代理中间件只提供接口,但不提供建造这些接口的工具是完全不适用的。消息代理中间件的开发环境是基于对象的,能够不用构造程序逻辑就建立与各种资源的接口。
  消息代理中间件通常包括一些标准的接口,如SAP ALE、HL7、FTP、Lotus Notes等,如压缩包装的接口,构造接口的工具应支持TCP/IP socket接口/SNA CPIC接口/TTY接口/SQL接口/基于会话的接口/基于文件的接口/HTML接口等等。

完备的安全机制
  消息代理中间件的安全控制,能识别冒名顶替者的消息。消息代理中间件引擎,对来自接口、进行数据转换过程中的消息执行身份验证、授权和防抵赖处理。
  消息代理中间件具有内置的数字签名功能,一组利用非对称秘钥或/和对称秘钥算法的安全功能的集合,可以在应用开发中调用这些功能。数字签名基于非对称秘钥体系结构(PKI),可以有效地保证消息的完整性、发送方、接收方身份可鉴别以及不可抵赖性。
  对称与非对称加/解密体制的结合,可以方便地实现消息在传输中的保密性。

未来走向

  消息代理中间件作为企业应用集成的有效工具,发展极为迅速。消息代理中间件一种新的趋势是,增加协同处理、处理自动化等"商件"(Businessware)模快,比较直观地支持在商务逻辑层上的应用集成与开发。与商件的结合,是消息代理产品的一个重要的技术走向。