专栏首页cloudskyme企业级集成和ESB

企业级集成和ESB

ESB是什么?

ESB是一个主要依赖XML消息交换的企业级消息系统,这种消息继而被智能的通过一种非集中式的架构路由和转换。

开源的ESB?

Mule,ServiceMix,Apache Synapse,JBoss ESB,Sun的OpenESB和Apache Camel等。

ESB和SOA之间的关系?

原因是这两个词包含的内涵太丰富了,无法用一两句话说清楚,并且,这个词在不同的地方含义也有所不同。

SOA----面向服务架构,实际上强调的是软件的一种架构,一种支撑软件运行的相对稳定的结构,表面含义如此,其实SOA是一种通过服务整合来解决系统集成的一种思想。不是具体的技术,本质上是一种策略、思想。

ESB----企业服务总线,像一根“聪明”的管道,用来连接各个“愚笨”的节点。为了集成不同系统,不同协议的服务,ESB做了消息的转换解释与路由等工作,让不同的服务互联互通。

目前ESB与SOA的确切概念依然没有。但可以明确的说SOA就是一种服务集成思想,它的不同实现方式可能差别很大,目前SOA最常见的实现方式是SCA和JBI。

ESB的历史?

是从企业集成应用(EAI)衍生出来的。

看看什么是MOM

MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

面向消息的中间件使用消息传送提供者来协调消息传送操作。MOM系统的基本元素是客户端、消息和MOM提供者,后者包括API和管理工具。MOM提供者使用不同的体系结构路由和传送消息:它可以使用集中式消息服务器,也可以将路由和传送功能分布在每个客户端上。某些MOM产品结合了这两个方法。

  使用MOM系统,客户端可以进行API调用,以便将消息发送到由提供者管理的目的地。该调用会调用提供者服务以路由和传送消息。在发送消息之后,客户端会继续执行其他工作,并确信在接收方客户端检索该消息之前,提供者一直保留该消息。基于消息的模型与提供者的协调耦合在一起,使得创建松散耦合的组件系统成为可能。这样的系统可以继续可靠地工作,即使在有个别组件或连接失败时也不会停机。

  由消息传送提供者协调客户端之间的消息传送的另一个优点是:通过添加管理界面,可以监视和调整性能。这样,客户端应用程序便不必关心发送、接收和处理消息之外的任何问题。对于互操作性、可靠性、安全性、可伸缩性和性能之类的问题,应当由管理员通过编码实现MOM系统来解决。

  至此,我们已经介绍了使用面向消息的中间件连接分布式组件的很多优点。下面将介绍其缺点。缺点之一源自松散耦合本身。在RPC系统中,只有在被调用函数完成任务之后,才能返回调用函数。在异步系统中,调用方客户端会继续为接收方装入工作,直到处理装入工作所需的资源耗尽且被调用组件发生故障。当然,可以通过监视性能和调整消息流来尽量减少或避免这些情况,但对于RPC系统却不必这样做。有一点很重要,那就是了解每种系统的优缺点。每种系统所适合执行的任务都不同。有时,您需要结合两种系统才能完全获得所需的行为。

看一下结构

使用这种结构最大的优点是它是非集中式的。

将其扩展一下,将集成中介改为服务适配器,这样的功能就完全可以实现ESB了。

ESB的核心功能?

面向服务的架构 - 分布式的应用由可重用的服务组成

面向消息的架构 - 应用之间通过ESB发送和接受消息

事件驱动的架构 - 应用之间异步地产生和接收消息

协议的适配,消息的传递,智能路由,消息转换,任务/定时器,监控及可扩展的API。

ESB适用的场合?

服务化,服务虚拟化,异步通信和协议桥接。

服务化:将应用功能服务化,比如某个系统,并没有提供对外的服务接口或者提供的比较差强人意,可以考虑使用ESB。

服务虚拟化:电话的例子比较能说明问题,通常情况下你打电话只是要拨通号码,而不需要知道对方的实际位置,号码就是虚拟的服务,而实际的应用在后台进行管理。

异步通信:处理异步的消息或者异步的请求。

协议桥接:多协议之间的转换。

使用Apache Synapse

Apache Synapse有什么功能?

1,协议适配器

2,面向消息的中间件,可以配置与任何JMS兼容的消息系统交互

3,基于XML的可靠消息传递

4,智能路由和分发,可以实现多种方式的过滤

5,消息转换服务

6,任务/定时器,可以支持类似unix/linux的cron那样的复杂精细的排程

7,服务质量提供及web中介服务,可以实现负载均衡,故障转移的规则逻辑,可以实现消息级别的划分

8,监控和管理,提供JMX监控的支持

9,可扩展的API

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ESB是什么

    ESB是一个主要依赖XML消息交换的企业级消息系统,这种消息继而被智能的通过一种非集中式的架构路由和转换。 开源的ESB? Mu...

    程序源代码
  • Mybatis-mapper-xml-基础

    今天学习http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html。关于mapper.xml的sql语句的使用。 项...

    Ryan-Miao
  • Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍   dom4j的项目地址:http://sourceforge.net/projects/d...

    Ryan-Miao
  • 从XMLHttpRequest请求响应里getResponseHeader(header)报错:Refused to get unsafe header "**" 问题解决

    问题产生原因: 原因1:W3C的 xhr 标准中做了限制,规定客户端无法获取 response 中的 Set-Cookie、Set-Cookie2这2个字段,...

    李文杨
  • spring学习遇到的问题汇总

     1.spring注解路由方面的误解 我一直以为在web.xml中配置拦截*.action后,在注解路由的时候必须要xxxx.action。 刚才发现,访问的时...

    Ryan-Miao
  • Mybatis XML 映射配置文件 -- 熟悉配置

    来源:http://www.mybatis.org/mybatis-3/zh/configuration.html properties mybatis读取属性...

    Ryan-Miao
  • Latex 公式在线可视化编辑器

    寻觅 最近的一个demo需要用到Latex公式在线编辑器,从搜索引擎一般会得到类似http://latex.codecogs.com/eqneditor/edi...

    用户1177380
  • javascript 模拟按键点击提交

    上代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta...

    纯粹是糖
  • Result Maps collection already contains value for ***

    关于  MyBatis配置的时候,出现  Result Maps collection already contains value for ***  这个的问...

    庞小明
  • Mybatis-mapper-xml-基础

    今天学习http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html。关于mapper.xml的sql语句的使用。 项...

    Ryan-Miao

扫码关注云+社区

领取腾讯云代金券