对ESB概念的理解(转)
http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/
什么是 ESB?ESB 严格来说不是某一个产品,而是一种框架,设计模式。不同的提供商对 ESB 的理解也各有不同。从 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 产品: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 产品比较:
总结,WESB 适用于 J2EE 环境下,对性能要求不是很高的,标遵循标准协议的 SOA 集成;WMB 应用更复杂的集成环境,表现为数据格式多种,传输协议多样,性能要求很高;而在安全和性能要求都很高的应用场景下,选择 Datapower 无疑是最好的选择。下面的图表再次对文中的描述进行总结。
ESB 功能特点 | WESB 的支持 | MB 的支持 | Datapower |
---|---|---|---|
消息转换 | XML | XML、非 XML | XML、非 XML |
支持的协议 | HTTP,JMS, WMQ 等 | 多达上百种 | 介于前二者之间 |
消息路由 | 强大,灵活 | 功能强大,灵活 | 灵活度比前二者稍弱 |
Web Service | 强大的支持 | 支持 WS 扩展 | 强大的支持 |
事件处理 | CEI,可以和外部事件消费系统监控 | Trace Service | 用于调试 Probe |
遗留系统的集成 | Adapter | 丰富的 SupportPac | 特定的遗留系统 |
安全 | 依赖 WAS 的安全 | 部署和运行时两个级别的安全 | 超强的安全支持 |
性能 | 几十到几百每秒 | 几千到几万每秒 | 达到线速 |
开发和部署 | WID 集成开发环境 | WMB Toolkit | WebGUI |
- WESB 的优势是提供了和流程服务器 WPS 以及 J2EE 服务器 WAS 良好的整合。WESB 适合使用于对性能要求不是很高,且遵循标准协议的 SOA 整合环境中。
- WMB支持几乎大部分常用的数据格式和协议。并且提供了良好的扩展功能,开发人员可以在 WMB 基础上开发自己的数据格式解析的节点。处理性能较高。适合于信息传输量较大,信息交互频繁的场景中。
- Datapower 使用硬件的 XML 解析和加速器,在性能上有了很大的提高。在安全和性能要求都比较高的环境中,Datapower 是一首选 ESB。
WebSphere ESB 与 SIBus 的比较:
1.WAS v6中的服务集成总线 (SIBus) 技术可以创建ESB。
2.ESB 的基本功能回顾
总的来说,ESB 通过一组丰富的功能(包括智能路由、协议中介和其他转化机制)集成服务,实现对应用程序之间交互的管理和监视,从而提供了在企业内部和企业之间连接新的和现有软件应用程序的功能。ESB 支持服务可视化,从而在服务请求者和服务提供者之间提供了多方面的分离。
以下是比较关键的ESB 功能
1).首先,ESB 能够通过各种方式与服务请求者和服务提供者交互:可以通过持久性消息中枢(特别是 MQ)发送和接收消息,并能够通过 HTTP 和 JMS发送和接收 Web 服务请求和响应消息。
2).其次,能够在不同消息和传输协议之间转换,如将 HTTP 上的 SOAP 转换为 JMS 上的 SOAP。
3).然后,能够使用流行的转换语言 XSLT 转换 XML 消息。
4).能够应用消息中介(如日志记录)。提供高级功能包括消息的监视、在服务注册中心中查询端点和异步请求/响应。
3.ESB 的现有功能:
1).ESB 非常重视标准,可以对 XML 和 SOAP 提供一流的支持。
2).ESB 的核心是中介流组件,它是特定类型的 SCA 组件,支持SCA/SDO 编程模型。可以使ESB与WPS组件轻松集成。
3).ESB 需要SDO 的扩展——服务消息对象(Service Message Objects,SMO)——它使我们能够访问所需的消息上下文和内容。
4).ESB 需要XSLT转换语言转换 XML 消息。
5).需要连接不支持现成的 SOAP 或 XML 的现有系统时,WebSphere Adapters 可以为我们节省许多开发时间,因为可以将它们用作能够“连接”到 WebSphere ESB 中介的另一个 SCA 组件类型。
4.ESB 与 SIBus 的比较
1).ESB 和 WID 提供了 SIBus 没有的功能,SIBus配置过程可能非常麻烦;ESB 可以通过WID进行可视化中介流组件的开发。ESB 支持不同的交互模式与请求和响应消息的自动关联。SIBus只能通过代码实现,开发速度无法比;
2).ESB的缺省 JMS 提供程序即SIBus的JMS 提供程序,ESB基于WAS,ESB安装也自动含有SIBus功能。
3).SIBus 中介和 ESB 中介之间的差异,二者的中介框架实现、API、包装和管理模型是不同的。SIBus 和 ESB 将 SDO 用作通过总线的消息流的表现机制。但ESB使用称为 Service Message Objects (SMO) 的 SDO 扩展。
4).将 SIBus MQLink 与 WebSphere ESB 一起使用,SIBus 通过其 MQLink 功能提供到 MQ 的连接,ESB 也可以使用MQ SCA 本地绑定连接MQ。
5).SIBus 和 WebSphere ESB 基础结构的共存和集成,ESB 和 SIBus 可以共存,并且可以互相迁移。
面向 ESB 的体系结构:一种错误的采用 SOA 的方式
面向 ESB 的体系结构并不带来业务价值。基于面向 ESB 的体系结构的项目需要成为基于 SOA 的项目,才能帮助确保成功地提供业务价值。
SOA 的主要目标是在业务领域与 IT 领域之间保持一致,从而同时提高二者的效率。SOA 基于业务需求。SOA 可保持 IT 与业务的一致性,所以SOA还要有很复杂的分析,而ESB并不需要业务需求来实现服务总线。ESB是在真正需要的时候实现所需的内容,而不要在预计会使用时进行实现。
图 1. SOA 参考体系结构——解决方案堆栈视图
参考:
http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/
http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/
http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/2.html
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0812_chinoda/0812_chinoda.html
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0905_loulj_esb1/
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0905_loulj_esb2/
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0906_loulj_esb3/
http://blog.itpub.net/67003/viewspace-660065/
对ESB概念的理解(转)的更多相关文章
- atitit.闭包的概念与理解attilax总结v2 qb18.doc
atitit.闭包的概念与理解attilax总结v2 qb18.doc 1.1. 闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.1 2. #---- ...
- JAVA中用堆和栈的概念来理解equals() "=="和hashcode()
在学习java基本数据类型和复杂数据类型的时候,特别是equals()"=="和hashcode()部分时,不是很懂,也停留了很长时间,最后终于有点眉目了. 要理解equals() ...
- 对MP4一些概念的理解
首先,对视频一些基本概念的理解: I帧:i帧又称为内编码帧,是一种自带全部信息的独立帧,可独立解码,可理解为一张静态图片,视频序列中的第一个帧始终是i帧,因为它是关键帧. P帧:P帧又称为帧间预测编码 ...
- 【C/C++】对于可重入、线程安全、异步信号安全几个概念的理解
由于前段时间,程序偶尔异常挂起不工作,检查后发现时死锁了,原因就是:在信号处理函数里面调用了fprintf. printf等io函数是需要对输出缓冲区加锁,这类函数对本身是线程安全的,但是对信号处理函 ...
- k8s中几个基本概念的理解,pod,service,deployment,ingress的使用场景
k8s 总体概览 前言 Pod 副本控制器(Replication Controller,RC) 副本集(Replica Set,RS) 部署(Deployment) 服务(Service) ingr ...
- 有关基于模型的设计(MBD)一些概念和理解(zz)
http://www.matlabsky.com/thread-38774-1-1.html 本文转载于MathWorks中国高级工程师董淑成的帖子内容.为了方便阅读,对原文进行了重新整理编辑. 之前 ...
- 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解
嵌入式设备一般要满足实时性的要求,而实时性是要求数据输入和输出的延时满足一定的要求.当然嵌入式一般都便携性都比PC要好,功能没有PC多,PC是通用,他是专用,一般只专注某些功能的实现,比如DSP专注数 ...
- 关于Git的暂存区这个概念的理解.
Git中的暂存区成为stage或者是index.可以理解成一个"提交任务".Git暂存区是Git最成功的设计之一,但是也是最难理解的. 暂存区是一个介于工作区和版本库的中间状态.当 ...
- Z-Stack协议中几个重要概念的理解
1. 原语 ZigBee设备在工作时,各种不同的任务在不同的层次上执行,通过层的服务,完成所要执行的任务.每一层的服务主要完成两种功能:根据它的下层服务要求,为上层提供相应的服务:另一咱是根据 ...
随机推荐
- GC日志分析
JVM的GC日志的主要參数包含例如以下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的具体日志 -XX:+PrintGCTimeStamps 输出GC ...
- 2014-5-22 java.lang.OutOfMemoryError: Java heap space的一次诊断
收到消息某系统一个节点因为内存溢出而宕机.系统的中间件是weblogic.数据库的oracle. 1. 先用IBM HeapAnalyzer分析内存溢出时的dump文件,找到占用内存最多的请求,然后 ...
- xcode多target
原文:http://www.codza.com/free-iphone-app-version-from-the-same-xcode-project There are more than 15,0 ...
- 我的Android学习之旅(转)
去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...
- Hdu 4539 【状态DP】.cpp
题意: 一个炮兵可以攻打和他之间曼哈顿距离为2的士兵,给出你一块n*m的战场,告诉你哪些地方可以站人哪些地方不可以,问你最多可以安放多少个士兵? n <= 100, m <= 10 思路: ...
- 怎样使用docker不加sudo
有时候发现docker有的指令必须加sudo才干运行,通过下面三步设置便可不加sudo直接运行docker指令: 1. 假设还没有docker group就加入一个: sudo groupadd do ...
- android2.2应用开发之IccCard(sim卡或USIM卡)
tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51 ...
- My97 DatePicker
支持日期以及时分秒的选择, 国人开发, 还不错! 官网: http://www.my97.net/
- Spark1.0.0 属性配置
1:Spark1.0.0属性配置方式 Spark属性提供了大部分应用程序的控制项,而且能够单独为每一个应用程序进行配置. 在Spark1.0.0提供了3种方式的属性配置: Sp ...
- Java--调试--单步调试,断言,单元测试
单步调试:主要查看变量内容的变化 1.设置断点位置,设置在可能出现问题的代码 2.以Debug as方式运行 程序 3.F5 --> step into 进入方法内部进行调试 F6 ...