SOA的设计模式_2.企业服务总线模式

1.企业服务总线(|Enterprise Service Bus,ESB)       

        在企业基于SOA实施EAI、B2B和BMP的过程中,如果采用点对点的集成方式存在着复杂度高,可管理性差,复用度差和系统脆弱等问题。企业服务总线(|Enterprise Service Bus,ESB)技术在这种背景下产生,其思想是提供一种标准的软件底层架构,各种程序组件能够以服务单元的方式“插入”到该平台上运行,并且组件之间能够以标准的消息通信方式来进行交互。它的定义通常如下:企业服务总线是由中间件技术实现的支持面向服务架构的基础软件平台,支持异构环境中的服务以基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。

2.ESB示意图 

        如图1所示,ESB本质上是以中间件形式支持服务单元之间进行交互的软件平台。各种程序组件以标准的方式连接在该“总线”上,并且组件之间能够以格式统一的消息通信的方式来进行交互。

        图1 ESB示意图 

一个典型的在ESB环境中组件之间的交互过程是:首先由服务请求者触发一次交互过程,产生一个服务请求消息,并将该消息按照ESB的要求标准化,然后标准化的消息被发送给服务总线。ESB根据请求消息中的服务名或者接口名进行目的组件查找,将消息转发至目的组件,并最终将处理结构逆向返回给服务请求者。这种交互过程不再是点对点的直接交互模式,而是由事件驱动的消息交互模式。通过这种方式,ESB最大限度解耦了组件之间的依赖关系,降低了软件系统互连的复杂性。连接在总线上的组件无需了解其他组件和应用系统的位置及交互协议,只需要向服务总线发出请求,消息即可获得所需服务。服务总线事实上实现了组件和应用系统的位置透明和协议透明。技术人员可以通过开发符合ESB标准的组件(适配器)将外部应用连接至服务总线,实现与其他系统的互操作。同时,ESB以中间件的方式,提供服务容错、负载均衡、QoS保障和可管理功能。

3. ESB的核心功能 

        ESB的核心功能如下:

        (1)提供位置透明性的消息路由和寻找方式。

        (2)提供服务注册和命名的管理功能。

        (3)支持多种消息传递规范(如请求/响应、发布/订阅等)

        (4)支持多种可以广泛使用的传输协议。

        (5)支持多种数据格式及其互相转换。

        (6)提供日志和监控功能。

        由于采用了基于标准的互联技术,ESB使得企业内部以及外部系统之间可以很容易地进行异步或同步交互。它采用的面向服务的架构为系统提供了易扩展性和灵活性,在提高集成应用的开发效率的同时降低了成本。ESB技术克服了传统应用集成技术的缺陷,能够对各种技术和应用系统提供支持,具有很强的灵活性和可扩展性,可以说是目前理想的EAI、B2B应用系统集成吃撑

相关推荐

  1. SOA设计模式_1.服务注册表模式

    2024-06-10 11:52:02       30 阅读
  2. 服务设计模式

    2024-06-10 11:52:02       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 11:52:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 11:52:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 11:52:02       82 阅读
  4. Python语言-面向对象

    2024-06-10 11:52:02       91 阅读

热门阅读

  1. IAR仿真调试

    2024-06-10 11:52:02       25 阅读
  2. 集群与分片:深入理解及应用实践

    2024-06-10 11:52:02       28 阅读
  3. 基于AnolisOS 8.6的OpenVPN和GmSSLv2国密算法SSL VPN测试

    2024-06-10 11:52:02       31 阅读
  4. Hadoop

    Hadoop

    2024-06-10 11:52:02      32 阅读
  5. http网络服务器

    2024-06-10 11:52:02       24 阅读
  6. Ubuntu 网络重置

    2024-06-10 11:52:02       31 阅读
  7. 【无标题】

    2024-06-10 11:52:02       30 阅读
  8. Git LFS的使用

    2024-06-10 11:52:02       35 阅读
  9. Bat脚本专栏目录及索引

    2024-06-10 11:52:02       31 阅读
  10. c++ 实现栈、单向队列、双向队列

    2024-06-10 11:52:02       24 阅读
  11. 11.链表

    11.链表

    2024-06-10 11:52:02      30 阅读
  12. 汇川CodeSysPLC教程03-2-3 Modbus ASCII

    2024-06-10 11:52:02       30 阅读
  13. GoogLeNet

    GoogLeNet

    2024-06-10 11:52:02      25 阅读
  14. MySQL和Oracle区别

    2024-06-10 11:52:02       34 阅读