ESB(企业服务总线)

menu icon

ESB(企业服务总线)

在本指南中,您将详细了解 ESB(SOA 的基本组件)、其提供的优势以及它与微服务架构的关系。

什么是 ESB(企业服务总线)?

ESB(企业服务总线)是一种模式,可让集中式软件组件执行后端系统集成(以及数据模型转换、深度连接、路由和请求),并将这些集成和转换作为服务接口提供,以供新应用程序复用。 通常使用专用的集成运行时和工具集来实施 ESB 模式,以确保最佳的生产力。

ESB 和 SOA

ESB 是 SOA(面向服务的架构)的基本组件,它是二十世纪九十年代后期出现的架构。 SOA 定义了通过服务接口来复用软件组件的方法。 此类接口会使用通用的通信标准,这些标准能够快速合并到新应用程序中,而不必每次都执行深度集成。

SOA 中的每个服务都包含执行整个独立业务功能 (如检查客户信用、计算每月贷款还款额或处理抵押贷款申请)所需的代码和数据集成。 这些服务接口提供松散耦合,这意味着,即使基本或根本不知道如何在底层实施集成,也可以调用这些接口。 将使用 SOAP(简单对象访问协议)/HTTP 或 JSON/HTTP 等标准网络协议公开这些服务,以便发送数据读取或更改请求。 服务的发布方式可以让开发人员快速找到并复用这些服务以组装新应用程序。

此类服务可从头开始构建,但通常是通过将原有记录系统的功能公开为服务接口来创建。 此时便需要使用 ESB。 原有系统和记录系统通常采用旧的协议和专有数据格式,因此需要进行转换和集成才能使用 SOA 网络协议。 ESB 将动态执行这些转换和集成。 可以在不使用 ESB 的情况下实施 SOA,但应用程序所有者必须采用自己独有的方式来公开服务接口,这就需要完成大量的工作(即使接口最终可复用也是如此),并且在将来需要完成大量的维护工作。

要了解有关 SOA 及 ESB 在其中的角色的更多信息,请参阅“SOA(面向服务的架构)简介。”

优点

从理论上讲,集中式 ESB 有可能标准化和大幅简化整个企业中服务的通信及集成。 硬件和软件成本可以共享,只需供应服务器一次,还可以指派单支专家团队(必要时进行培训)来开发和维护集成。

开发人员可使用单个协议与 ESB“对话”,并发出命令来指导服务间的交互,然后交给 ESB 转换这些命令、路由消息并根据需要变换数据以便顺利执行这些命令。 这样,开发人员就不需要将大量时间用于集成,而是将更多的时间用于配置和改进应用程序。 由于能够在不同项目之间复用这些集成,因此可以提高生产力并节省下游成本。

虽然有不少组织成功部署了 ESB,但在许多其他组织中,ESB 被视为 SOA 部署的瓶颈。 更改或增强某个集成通常会干扰到其他集成。 ESB 中间件更新通常会影响现有集成。 由于 ESB 是集中管理的,因此应用程序团队很快就发现需要排队等待集成。 随着集成量的增长,ESB 服务器实现高可用性和灾难恢复的成本变得更高。 作为跨企业项目,ESB 筹集资金较为困难,因而加大了相关技术难题的解决难度。

最终,维护、更新和扩展集中式 ESB 变得十分复杂且代价昂贵,以至于 ESB 经常会造成自身和 SOA 预期可得到的生产力效益迟迟无法实现,从而使期待锐意创新的业务团队感到挫败。

如需深入了解 ESB 的兴衰,请阅读“ESB 的命运”。

ESB 与微服务

微服务架构可将单个应用程序的内部结构分解为若干个可独立更改、扩展和管理的小板块。 伴随虚拟化云计算、敏捷开发实践和 DevOps 的兴起,微服务如雨后春笋般涌现和发展。 在这种背景下,微服务具有以下优势:

  • 提高开发人员敏捷性和生产力,具体方法是让开发人员将新技术整合到应用程序中,而无需接触或“追赶”应用程序的其余部分。
  • 更简单、更具性价比的可扩展性,具体方法是使任一组件可独立于其他组件进行扩展,以最快的速度响应工作负载需求并以最高效率使用计算资源。
  • 更强的灾备能力,因为一个组件的故障并不会影响其他组件,并且每个微服务只需达到自己的可用性要求,而无需让其他组件达到 “最大共同可用性”要求。

微服务带给应用程序设计的同等细分程度也会被带到集成中,并且具有相似的优点。 这就是敏捷集成背后的理念,将 ESB 细分为若干个去中心化的集成组件,这些组件不存在相互依赖关系,并且单个应用程序团队可以拥有并自主管理此类组件。

如需深入了解微服务的全部内容,请查看“微服务:完整指南”和“SOA 与微服务: 有何区别?” ,并观看 Dan Bettinger 的视频“什么是微服务?”:

ESB 和 IBM Cloud

随着贵公司将 IT 基础架构转向混合云方法, 因此很可能需要将各种工作负载(包括基于 SOA 和 ESB 模式的工作负载)转变为更轻量、更灵活的部署模型。 这种转变只是组织上云之路上应用程序现代化的一部分。  

采取下一步行动:

立即开始使用  IBM Cloud 帐户。