2009年4月2日星期四

Open ESB in action (1) - overview

1) 什么是ESB


ESB(Enterprise Service Bus)包含一条总线(bus)使得各种不同的系统可以通讯。在这个总线(bus)上使用共享的消息格式(shared messaging format),匹配器(Adapter)把各个后台应用系统的私有数据格式转换为共享的消息格式。此外ESB还提供一个平台来处理安全,变换,消息路由,事务,监控等。


2) 为啥用ESB


企业里都是有多个系统的。这些系统可能来自不同的厂商,采用不同的硬件平台,不同的软件平台,不同的编程技术,不同的格式。有些功能需求是跨系统的,因此必须让它们集成起来,协同工作。把各个系统集成起来,最大限度的发挥现有系统的价值,以适应快速变化的市场。


ESB的价值:满足快速变化的业务需求,一套统一处理异构环境的解决方案,减少维护成本





上图的方案是目前很多项目所采用的方式,没有良好的全局规划。当CRM和ERP系统需要集成时,就针对当前需求开发一个解决方案。用着用着,又有集成CRM和COBOL系统的需求了,再开发一个解决方案。每个解决方案都是一对一的,具体的,私有的,需要大量的编码工作,都是恰好满足当前的需求,可扩展和灵活性都非常低。每个解决方案都是从0开始做起,因此需要花很大的成本来维护。





从应用(application)的角度来看,一对一的解决方案,一个应用系统需要在经典的JavaEE三层架构上增加一个Integration层,在这个层里实现和各个外部系统整合的逻辑。当一个新需求过来,需要和一个新系统集成时,就得在这个Integration层增加新的逻辑。


下图是采用ESB的方案。所有现存的系统以及未来的新系统都连接到一个总线上,具体的需求主要在ESB上开发。ESB提供了一个平台,很多轮子已经造好,直接拿来用就可以,把用户的重心转向业务。





从应用的角度来看,应用只需要实现增加一个Integration层负责和ESB通讯。Integration层就比较简洁了,具体的逻辑搬到ESB里了。而ESB实现这些逻辑来又是得心应手,非常灵活的。





其实许多完善的企业软件(系统)都提供了Integration这么一个模块,比如Oracle EBS和Siebel CRM。Siebel CRM有EAI和EIM模块用来实现系统集成。应该是两种集成方案都支持,既支持端对端的集成,又支持挂在ESB上。


3)ESB的7个基本功能


Location transparency 位置透明性


Transport protocol conversion 传输协议的转换


Message transformation 消息格式的变换


Message routing 消息路由


Message enhancement 消息增强


Security 安全机制


Monitoring and management 总线监控和管理


4)EAI(Enterprise Application Integration)和ESB的区别


a)model


EAI:hub-and-spoke model,centeral, a single point of failure


ESB:bus-based model,a single logical bus, decoupling


b)use of open standard


EAI:proprietary technology


ESB:open standard, such as JMS,XML,WS


5)目前Open Source的ESB项目







没有评论:

发表评论