陈波
摘要:本文重点阐述以ESB与EAI相结合的基础上,提出一种适合中小企事业单位系统集成方案,即满足系统集成适应性、可靠性、松耦合及可扩展性,又可以满足低成本的需求。
关键词:企业服务总线(ESB);企业应用整合(EAI);JAVA消息服务(JMS) ;服务;主题;发布/订阅
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)34-0184-02
Abstract:This paper focuses on the combination of EAI and ESB, and puts forward a kind of system integration scheme for small and medium enterprises, which is to meet the needs of system integration, reliability, loose coupling and scalability, and can meet the needs of low cost.
Key words:Enterprise service bus (ESB) ;enterprise application integration (EAI) ;JAVA message service (JMS);Service; theme ;publish / subscribe
1 总体设计
1.1 集中式
EAI:Enterprise Application Integration,即企业应用整合,本文所说的EAI,特指EAI概念提出时,所指的集中式应用整合方案。随着企业应用集成需求复杂度增长,和集成经验的总结,出现一些集中式管理集成中间件模式,如消息中枢、应用集成中心,这种模式简化应用之间日趋复杂的连接拓扑关系,提供异构数据和功能访问方式之间的转换。
不过,这个时期系统集成还是没有统一的标准,各厂商根据各自的业务集成需求提出不同的EAI解决方案,因此出现了各种各样的中间件平台,通过集中式方式集成通讯。当各个厂家之间需要集成,就必然出现各个独立中间件之间沟通集成,存在异构环境、拓扑环境增加复杂度、协议标准等问题。
虽然这种集成方式,极大地简化了拓扑链接关系,集成度高,消息统一转换,但如同HUB模式一样,带来了其他问题,如性能低下,因为每个系统之间的交互都需要中间件服务来中转,当需要连接交互的集成系统越来越多,中间件服务压力就越大,当达到极限必然会瘫痪,而且扩展、集群都非常麻烦。
1.2 服务总线
EAI集成发展到至今,已经具有更为广义的内涵,它已经被扩展到业务整合的范畴,将应用集成进一步拓展到业务流程整合的级别,不仅实现异构系统的互联互通、消息传输、转换,此时被集成的对象被明确定义为服务,而不是传统EAI中各种各样的中间件平台,这样就极大简化了在集成异构性上的考虑。
在此基础上,提出ESB集成方案,全称为Enterprise Service Bus,即企业服务总线,它是一定基于标准的。它是传统中间件技术与XML、Web服务等技术结合的产物。
ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。其出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。对于服务的系统使用者,不用关心服务的提供者是基于什么开发技术、在哪个位置、什么硬件平台提供的服务,这个服务使用的过程完全是松散和透明的。服务能够良好的重用,快速的组装或编排出新的业务应用、业务流程。
1.2集成方案
从本文的设计框图中可以看出,本方案中主体集成思路采用的是服务总线ESB方式,各个系统通过JMS发布各自的服务主题到ESB服务总线上,再通过JMS订阅ESB服务总线上自己需要的服务主题,无需关心提供服务的系统位置,也无需关心发布服务的接收系统位置,完全各自独立,松散透明,具有集成良好的松耦合、良好的重用性。而且现在流行的JMS组件都提供了大多数主流开发语言的接口支持,完全可以满足各个系统的接入使用。
同时,考虑到企事业单位系统集成时,或多或少存在着一些难题,导致部分旧系统无法接入ESB总线,如不少旧系统厂家已不存在、或者需要收取高额的二次开发费用,此时本设计方案中,增加一个中间件服务,提供集中式的EAI集成方案来协助ESB服务总线集成,所以不能接入ESB总线的旧系统,由中间件服务负责统一接入,利用旧系统已有的TCP/IP、WEBSERVICE等接口,或者直接数据库直连获取数据,进行分析转换后,发布达到ESB总线上,提供服务,即不破坏整个系统的ESB服务总线集成模式,又保持一定的独立完整性,简化了集成拓扑关系。
1.3 JMS简介
JMS,即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。
1.4 ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
多种语言和协议编写客户端。语言:Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP , 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,Jgroups,JXTA。
2 ESB建设方案
采用ActiveMQ开源JMS组件服务,作为ESB服务总线枢纽,各个系统对于服务的发布与订阅,采用JMS主题发布/订阅(PUB/SUB)模式来进行。
发布服务:所有系统的信息数据全部以JMS主题的方式发布到服务总线上,为各个系统提供服务,无需关心服务使用者以及目的地位置。
订阅服务:各个系统使用JMS订阅各自关心的信息主题服务,无需关心信息数据服务的来源,保证系统集成的松耦合、易扩展、可集群的优势。
传输协议:局域网应用,建议TCP。
传输消息类型:
? 信息数据:相对于现在的信息系统很多都是使用B/S架构,建议信息组装成JOSN格式,形成文本,最终使用TextMessage进行传输,即能满足各个异构系统的通用解析,也方便WEB系统的机器阅读。
? 请求/应答类消息:建议采用MapMessage或StreamMessage格式,约定好消息格式即可,如CMD(INT) + RESULT(INT) + DATA (STRING),数据类型采用通用数据类型,如int、string等,保证异构系统的解析方便。
3 EAI建设方案
ESB建设方案虽然有很好的扩展性、松耦合性、利于集群等诸多优点,但由于ESB的建设方案还比较新,企事业单位很多已存在的业务系统,都不存在ESB所采用的常规JMS接口,需要系统的原厂家进行二次开发,但在现实项目中,或多或少会存在一定的难题,导致无法接入ESB总线。
遇到此类问题,一般建议建设一个中间件服务,采用集中式集成方案EAI,所有的无法接入ESB总线的系统,全部由中间件服务来进行接口通讯,可采用多种通讯方案,根据系统已有接口WEBSERVICE、Tcp/IP等,或直接数据库直连方式等,进行信息数据的沟通,最终再由中间件服务通过JMS接口发布到ESB服务总线上,供所有系统订阅使用。
这样即解决了以上部分厂家系统无法接入集成的问题,又保证了数据共享的松耦合性,让集成平台专注于业务处理。
中间件服务的多任务调度建议采用Quartz,Quartz是一个完全由java编写的开源作业调度框架,Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,提供了Job调度能力,它能满足典型的企业需求,如可伸缩性、高可靠性满足。
Quartz可以与spring集成,配置非常方便,如以下代码:
class=”org.springframework.scheduling.quartz.JobDetailBean”>
4 结束语
通过对系统集成方案的发展史分析,以及当前企事业单位集成应用的实际情况和难题,结合当前的流行框架及开源技术,在保证系统集成的松耦合、易扩展、稳定可靠的特性基础上,介绍了一个具有贴近集成实际需求环境、造价低的系统集成方案组合,及开源技术使用。为现今企事业单位的系统集成,提供一个通用性、实用性、可扩展、易用性高、造价低的解决方案。
参考文献:
[1] 曾文英,赵跃龙,齐德昱. ESB原理、构架、实现及应用[J].计算机工程与应用,2008(25).
[2] 包小明,吴晓,张海辉,等. 一种企业服务总线的设计与实现[J].计算机应用,2008(3).
[3] 蔡昭权. 基于ESB的异构系统集成实现[J]. 计算机应用,2008(2).