`
lvwenwen
  • 浏览: 955282 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

ESB

ESB 
阅读更多
ESB全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
  ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
  ESB的五个基本功能:
  1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址管理功能。
  2)传输服务: 必须确保通过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。
  3)中介:提供位置透明性的服务路由和定位服务;多种消息传递形式;支持广泛使用的传输协议。
  4)多种服务集成方式: 如JCA,Web服务,Messaging ,Adaptor等.
  5)服务和事件管理支持: 如服务调用的记录、测量和监控数据;提供事件检测、触发和分布功能;
  ESB的八个扩展功能:
  1)面向服务的元数据管理: 他必须了解被他中介的两端,即服务的请求以及请求者对服务的要求,以及服务的提供者和他所提供的服务的描述;
  2) Mediation :它必须具有某种机制能够完成中介的作用,如协议转换;
  3)通信:服务发布、订阅,响应 请求,同步异步消息,路由和寻址等;
  4) 集成: 遗留系统适配器,服务编排和映射,协议转换,数据变换,企业应用集成中间件的连续等。
  5)服务交互: 服务接口定义,服务实现的置换,服务消息模型,服务目录和发现等。
  6)服务安全: 认证和授权、不可否认和机密性、安全标准的支持等;
  7)服务质量: 事务,服务的可交付性等;
  8)服务等级: 性能、可用性等。
  ESB 中最常提到的两个功能是消息转换和消息路由。
  我认为ESB或SOA,关键有4点:
1.reuse: 服务多了,就要避免重复,能重用的就重用
2.integration: 可重用服务之间会有依赖或者需要整合。才能完成更强大的功能。
3.route: 服务之间怎么整合,信息如何交换。route的过程会有过滤(filter)。
4.transform: 信息也需要转换成不同的格式。
理解ESB应该包含以下内容:

消息服务器:消息接收器、消息队列、消息发送器。。。
Router:路由
mapping:协议转换器
工作流:workflow,或者只是flow
等待。
ESB的全称是 企业 服务 总线。
应用领域是 企业级应用的集成。
关注点是 服务。
特点是 总线。

ESB应该是企业信息系统的基础性设置,各种可复用的资源(file,db,ws,jms,ftp,process,businessmodel等),可以注册到ESB,并在企业内部发布出来。同时,ESB应该易于扩展(协议,服务能力),易管理(提供监控和治理能力,QoS)。

EIP(企业集成模式)中 描述了ESB的动态轮廓:channel+filter:
一个ESB的运行时特征就像是一条流动的河(channel),中间可以走分支或者聚合(Splitter Aggregator),或者改道(router),也许某些地方,还有堤坝和水闸(flowcontrol)。

这个是我理解的ESB
总的来说,可以认为:ESB就是一个大的IOC(DI),spring的DI是object级别的,ESB的DI是service级别的.
ESB是SOA的一部分, SOA包括业务和技术两个方面,而ESB主要还是技术相关的.
webservice和esb的区别哪就是
webservice只是esb可以访问的一种服务提供者(协议)

webservice的方式只是一种大家都熟悉的一个方法,
打个比方,现在需要实现一个服务,客户端发送一个人员编码,返回人员姓名
下面的几种设计方法都可以成为esb(websphere message broker)的服务提供者

A,开发一个webservice,提供调用参数人员编码,返回包含人员姓名soap消息包
B.开发一个socketserver ,接受一个char[20]的 数组,返回char[100]的数组
C.开发一个structs action,通过 someaction.do?usercode=? 的方法返回一个json格式的姓名{name:'edwin'}
D.使用消息队列中间件,发送xml格式的请求消息,再从指定队列读取返回值

现在明白webserice和esb的关系了吧。

1.一般的esb流程是什么样子的?
是不是主系统发生soap请求。esb接收并且转换成jms然后子系统监听jms。最后得到数据。
还是。jms仅仅是内部转换。soap请求在esb转成jms后。加入队列。然后再转成soap调用子系统?
(先是整理需连接的系统,需要连接的系统功能(一般管它叫服务),确定服务的依赖关系,支持的协议(文件,WebService, RPC,...),调用的方式(同步/异步)
然后使用ESB提供的那些协议组件,一点点串起来就行。串的方式可以参考EIP (www.eaipatterns.com)

你说的两种异步方式的话都可以,
如果是同步的,也可以直接soap -> soap, 不用JMS。 一般用JMS是为了实现异步通讯 )
2.使用jms的考虑是jms对队列的信息进行持久化。防止比如子系统突然挂掉了。消息丢失。
但是有个问题。是esb自动监听jms的队列的话。会导致直接消费了。而数据没有存在队列中。还是会出现消息丢失的问题。
这个应该怎么解决。
(JMS,至少我接触的ActiveMQ, 是可以支持事务的,发生异常,可以不消费信息 )

3.esb进行协议之间的转换。每种方式都需要些一个转换方式么?有没有什么通用的。或者是自动转换的。比如soap和jms的互相转换。不是协议切换。是内容转换。
(议转换是为了配合你那些需要整合的系统,如果都是SOAP,也就不需要转了。
消息内容转换(格式,内容),一般ESB都提供各种工具的。 )
1、如果你要做同步转异步,可以在esb上做成ws转jms,然后起到一个缓冲的作用。
最后可以再同步的返回给调用方。
你也可以修改调用方为jms方式,这样就是彻底的异步了,在esb端可以jms转ws,调用业务服务方的ws。
2、esb都支持事务的,jms中如果不确认消息的话,不会从持久存储去delete掉的。
一般的esb。也可以做成是esb消费掉消息,然后存入esb自己内置的jms provider中,这样你再消费的话,也是可靠的。还可以做成补偿机制的,即esb中如何消息处理失败,把消费放回去原来的queue或是一个中间的临时queue,稍后做recover。
3、从esb的不同transport进去的数据,在esb的中介层处理时,其实消息格式都是一致的、通用的。也就是说常见的ws或jms转换在一般的esb里处理都很简单。如果稍微复杂点,也很容易扩展transformer(比如通过xslt做xml格式转换)来实现数据内容和格式的转换。
分享到:
评论

相关推荐

    ESB原理及Mule ESB实践

    ### ESB原理及Mule ESB实践 #### ESB(Enterprise Service Bus)原理概述 **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的...

    ESB介绍和案例

    企业服务总线(Enterprise Service Bus,简称ESB)是企业级集成的重要工具,它作为服务导向架构(Service-Oriented Architecture,简称SOA)的核心组件,用于连接不同系统和应用程序,实现数据和服务的高效交互。ESB...

    esb简单例子 学习esb的初学者 可以看看

    **ESB(Enterprise Service Bus)** 是企业服务总线,是一种中间件,旨在促进不同系统间的集成和通信。它提供了一种方式,使得各种应用程序和服务能够通过标准接口进行交互,而无需了解彼此的具体实现细节。ESB的...

    talend-ESB是什么?OSGI是什么?TOS-ESB相关组件介绍

    ESB(企业服务总线)是面向服务体系架构(SOA)发展而来的,它将传统中间件技术与XML、Web服务等新兴技术相结合。ESB在企业中扮演着基础的连接中枢角色,是构成企业神经系统的必不缺少的组件。它改变了传统的软件...

    C# ESB 分布式处理技术 Remote

    **C# ESB 分布式处理技术 Remote** 在软件开发中,企业服务总线(Enterprise Service Bus,ESB)是一种架构模式,它提供了一种在分布式系统中集成和交互服务的方式。C#中的Remote技术是.NET框架提供的一个关键组件...

    ESB技术学习教程,适用初学ESB人员

    Enterprise Service Bus (ESB) 技术是一种关键的中间件解决方案,特别适用于构建和整合分布式企业应用。ESB 的核心理念在于提供一个平台,使得不同的服务能够高效、安全地进行交互,实现服务导向架构(Service-...

    ESB3实例代码及文档

    【标题】"ESB3实例代码及文档"指的是企业服务总线(Enterprise Service Bus,ESB)的第三阶段实现的相关实例代码和配套文档。ESB是企业级集成的关键技术,它提供了一种在不同系统之间交换信息和服务的方式,使得应用...

    泛微Ecology9.0数据展现集成之ESB接口应用

    泛微Ecology9.0是一款企业级协同办公系统,它在9.0版本中引入了对ESB(Enterprise Service Bus,企业服务总线)接口的支持,以实现更高效的数据展现和集成。ESB作为一种中间件,它能促进不同系统间的通信,通过统一...

    mule -esb 源码

    《深入解析Mule ESB源码》 Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 ...

    WSO2ESB的详细介绍指南

    WSO2 ESB(Enterprise Service Bus)是一款开源的企业服务总线,由WSO2公司开发。它是企业级集成解决方案的核心组件,旨在简化不同系统之间的通信,实现服务化架构。本指南将深入探讨WSO2 ESB的安装、配置、使用以及...

    企业消息总线(ESB)源代码

    企业消息总线(ESB),全称为Enterprise Service Bus,是企业级软件系统中的一种关键架构组件,用于实现不同系统间的松耦合通信。它通过提供一个中间层来处理消息传递,使得应用程序可以发送和接收消息,而不必直接...

    WSO2 ESB消息路由示例

    **WSO2 ESB消息路由示例** WSO2企业服务总线(ESB)是一款强大的中间件,用于实现企业应用程序之间的集成和通信。在WSO2 ESB中,消息路由是其核心功能之一,它允许系统根据预定义的规则和策略对消息进行导向和处理...

    Mule ESB手册-中文版

    根据提供的文件内容,以下是关于Mule ESB手册-中文版的知识点: 1. Mule ESB简介 Mule ESB(Enterprise Service Bus)是MuleSoft公司开发的一款企业服务总线产品,它允许企业内部和不同企业之间的服务进行集成,...

    银行esb开发全过程(使用webservice)

    银行esb开发全过程(使用webservice) 本文档描述了银行esb开发的全过程,包括所需软件、操作步骤和相关代码。使用javawebservice技术。 一、相关软件: 1. JDK环境:Java开发的基础环境。 2. apache-cxf:一个...

    nrf52832 esb 收发一体代码

    在本文中,我们将深入探讨基于nRF52832微控制器的ESB(Enhanced ShockBurst)无线通信技术,以及如何实现收发一体的代码。nRF52832是Nordic Semiconductor公司推出的一款低功耗蓝牙(Bluetooth Low Energy, BLE)和...

    IBM ESB 介绍(IBM ESB Story)

    【IBM ESB 介绍(IBM ESB Story)】 在IT行业中,企业服务总线(Enterprise Service Bus,简称ESB)是一种关键的中间件技术,它为企业的应用集成提供了灵活、可扩展的架构。IBM作为业界领先的技术提供商,拥有两款...

    WEBSERVICE调试工具-ESB消息统一推送接口调用说明.doc

    WEBSERVICE调试工具-ESB消息统一推送接口调用说明 本文档主要介绍了WEBSERVICE调试工具的使用,旨在帮助开发WEBSERVICE接口的同学更好地理解和使用ESB消息统一推送接口。该接口用于短信、微信等渠道的消息统一推送...

    MuleEsb开源框架简介.pdf

    Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...

    普元ESB软件v6.2-产品白皮书.doc

    普元ESB软件v6.2-产品白皮书 普元ESB软件v6.2是企业服务总线(Enterprise Service Bus,ESB)的解决方案,旨在帮助企业集成多种异构系统和应用程序,实现业务流程自动化和集成。根据白皮书内容,我们可以总结出以下...

Global site tag (gtag.js) - Google Analytics