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。

看看什么是MOM?

MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。面向消息的中间件使用消息传送提供者来协调消息传送操作。MOM系统的基本元素是客户端、消息和MOM提供者,后者包括API和管理工具。MOM提供者使用不同的体系结构路由和传送消息:它可以使用集中式消息服务器,也可以将路由和传送功能分布在每个客户端上。某些MOM产品结合了这两个方法。

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

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

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

看一下结构使用这种结构最大的优点是它是非集中式的。将其扩展一下,将集成中介改为服务适配器,这样的功能就完全可以实现ESB了。

ESB的核心功能?

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

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

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

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

ESB适用的场合?

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

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

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

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

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

一般ESB具有什么功能?

1,协议适配器

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

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

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

5,消息转换服务

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

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

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

9,可扩展的API

声明:文章属原创。转载:请注明文章出处。

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2018-02-24

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

快速掌握:大型分布式系统中的缓存架构

CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中...

1043
来自专栏Aloys的开发之路

利用Spring中同名Bean相互覆盖的特性,定制平台的类内容。

今天处理了一个问题,J2EE项目依赖了底层平台的功能,平台JAR包中配置了一个Bean,对应的实现类也在该平台JAR包中,由于Bean的配置不是懒加载的,所以在...

4606
来自专栏13blog.site

Spring如何加载log4j配置文件

2023
来自专栏全华班

工作流学习-用户与组的基础概念

阅读文本大概需要 5 分钟。 前一段时间我们在前面文章中介绍了工作流、也初步认识了Activiti流程框架,我们知道了它是目前市面上比较流行的工作流...

4154
来自专栏逸鹏说道

Windows无法安装到这个磁盘。请确保在计算机的BIOS菜单中启用了磁盘控制器

今天一朋友问我这个问题,呃,以前我也遇到过,但忘记记录了,这次就记录一下吧,就懒得打字了,图片里面很清楚了 ? ? ? ? ? 不说点什么的话是不是太水了O(∩...

7167
来自专栏飞雪无情的博客

工具 | Android Studio 2.3镜像更新,极速下载体验#2

Android Studio 2.3发布了,更新了很多不错的功能,比如WebP的支持,AppLink助手等,,因为众所周知的原因,所以就第一时间更新了镜像,让大...

973
来自专栏农夫安全

【小技巧】获取到的cookie如何简便使用

首先假设我们通过XSS或者前端某骚姿势拿到某人的cookie【必须是完整cookie,因为cookie不完整也时候不能成功登录该用户的】

1052
来自专栏飞雪无情的博客

常用工具镜像网站又更新了#1

2016年11月份搭建了一个常用工具的镜像网站,因为众所周知的原因,很多软件工具需要自备梯子才可以下载,但是有的软件工具非常大,在梯子下下载,时间长的像噩梦,所...

2214
来自专栏大魏分享(微信公众号:david-share)

详细描述微服务架构模式 | 微服务系列第三篇

虽然微服务通常是单独部署的,但大多数企业级微服务架构要求服务彼此交互以及与其他外部服务交互。 使用进程间通信(IPC)机制实现该通信。 根据应用程序的要求,微服...

1002
来自专栏测试驿栈

Jmeter(一)_环境部署

  Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试CS/BS的软件。它可以用来测试静态和动态资源的性能,可用于模拟大量负载来测试一...

1842

扫码关注云+社区

领取腾讯云代金券