对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设备在工作时,各种不同的任务在不同的层次上执行,通过层的服务,完成所要执行的任务.每一层的服务主要完成两种功能:根据它的下层服务要求,为上层提供相应的服务:另一咱是根据 ...
随机推荐
- NEU月赛Segment Balls(线段树)
问题 D: Segment Balls 时间限制: 1 Sec 内存限制: 128 MB 提交: 253 解决: 37 题目描述 Small K has recently earn money i ...
- 在内网架设一个可供外网登录的ftpserver
ftpserver是使用比較寻常的server,可是IP资源是有限的.那么怎么让内网的server給外网的用户提供服务了? 首先须要找一个FTPserver程序,我在这边使用pure-ftpd-mys ...
- Max Sum (hdu 1003 简单DP水过)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- HTML中的div标签
在网页制作过程过中,能够把一些独立的逻辑部分划分出来.放在一个<div>标签中,这个<div>标签的作用就相当于一个容器. 为了使逻辑更加清晰,我们能够为这一个独立的逻辑部分设 ...
- Struts2 开发环境搭建
一.开发环境 eclipse+tomcat+struts-2.2.3 eclipse下载地址:http://www.eclipse.org/downloads/ tomca ...
- robot framework 使用四:分层设计和截图以及注意事项
再说一下眼下的主要环境信息和版本号: 操作系统:win7 64位 python版本号:2.7.6 RIDE版本号:1.2.3 selenium2library:1.5.0 selenium:2.40. ...
- SOHO路由器的静态路由的不同
网络拓扑如下,其中RA与RB皆为TP-LINK家用路由器 最终在TP-LINK官网的官网上找到这么一段话 静态路由是在路由器中手工设置的固定的路由条目.我司路由器静态路由是基于ICMP重定向原理,与其 ...
- [HDU 1427]速度计算24点(DFS暴力搜索)
主题连接: pid=1427">http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表 ...
- PHP计算中文字符串长度 、截取相应中文字符串
PHP计算字符串长度 及其 截取相应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,' ...
- Java中动态代理技术生成的类与原始类的区别 (转)
用动态代理的时候,对它新生成的类长什么样子感到好奇.有幸通过一些资料消除了心里的疑惑. 平时工作使用的Spring框架里面有一个AOP(面向切面)的机制,只知道它是把类重新生成了一遍,在切面上加上了后 ...