企业服务总线(ESB)从根本上是一种架构。是一套规则和原则,用于在类似总线的基础设施上将许多应用程序集成在一起。ESB产品使用户能够构建这种类型的架构,但他们的方式和提供的功能各不相同。ESB架构的核心概念是,您通过在它们之间放置通信总线来集成不同的应用程序,然后使每个应用程序能够与总线通信。这使系统彼此分离,允许它们在不依赖或了解总线上其他系统的情况下进行通信。ESB的概念诞生于摆脱点对点集成的需要,随着时间的推移,点对点集成变得脆弱且难以管理。点对点集成导致自定义集成代码在应用程序之间传播,没有集中的监控或故障排除方法。这通常被称为“意大利面代码”,不会扩展,因为它在应用程序之间造成了紧密的依赖性。
为什么要使用ESB?
通过缩短实施时间来提高组织敏捷性,是公司实施ESB作为其IT基础设施骨干的最常见原因之一。ESB架构通过提供一个简单、定义明确、可扩展的“可插拔”系统来促进这一点。此外,ESB提供了一种利用现有系统的方法,并使用其通信和转换功能将它们暴露给新应用程序。
ESB实施ESB架构有一些关键原则,允许业务敏捷性和规模。关键重点是将系统彼此分离,同时允许它们以一致和可管理的方式进行通信。
“ESB总线”概念将应用程序彼此解耦。这通常使用JMS或AMQP等消息服务器来实现。
在总线上传输的数据是一种规范格式,几乎总是XML。
应用程序和总线之间有一个“适配器”,可以在双方之间编排数据。
适配器负责与后端应用程序对话,并将数据从应用程序格式转换为总线格式。适配器还可以执行许多其他活动,如消息路由事务管理、安全性、监控、错误处理等。
ESB通常是无状态的;状态嵌入在通过总线的消息中。
规范消息格式是系统之间的合同。规范格式意味着在总线上有一个一致的消息格式,并且总线上的每个应用程序都可以相互通信
ESB整合核心原则让我们看看ESB架构如何映射到我们的五个核心集成原则:
编排:将几个现有的细粒度组件组合成一个高阶复合服务。这样做可以实现适当的服务“粒度”,并促进底层组件的重用和可管理性。
转换:规范数据格式和每个ESB连接器所需的特定数据格式之间的数据转换。这方面的一个例子是将CSV、Cobol copybook或EDI格式转换为SOAP/XML或JSON。Canoncial数据格式可以极大地简化与大型ESB实施相关的转换要求,因为那里有许多消费者和提供商,每个都有自己的数据格式和定义。
传输:多种格式(如HTTP、JMS、JDBC)之间的传输协议协商。注意:Mule将数据库视为另一个“服务”,使JDBC成为可以访问数据的另一个传输(或端点)。
调解:提供多个接口,用于a)支持多个版本的服务,以实现向后兼容性,或者,b)允许多个通道实现相同的底层组件。第二个要求可能涉及为同一组件提供多个接口,一个遗留接口(平面文件)和一个符合标准(SOAP/XML)的接口。
非功能一致性:对于典型的ESB倡议,这可以包括围绕安全和监控策略的应用和实施方式的一致性。此外,通过使用ESB的多个实例来增加吞吐量(可扩展性)并消除单故障点(SPOFs),可以实现可扩展性和可用性的目标,这是高可用性系统的关键目标。
选择ESB平台有许多ESB平台,从大型专有供应商到利基和开源供应商。在表面上,有很多相似之处。以下是在选择ESB时需要考虑的一些要点。
1.轻量级在选项过程中,我们需要充分考虑ESB集成平台部署成本和现有集成进行迁移的成本,以及进行迁移所需的繁重工作量。能否提供模块化和超快的热部署,以及易于重新排序和添加/更改功能的配置模型至关重要。
2.不仅仅是中间件大多数供应商认为ESB纯粹是系统之间的中间件,并拥有单独的产品来托管业务逻辑和发布服务。但在上线使用环节,提供一个轻巧且可扩展的服务容器,用于发布REST和SOAP服务也很关键。
3.易用性平台上线后,组织内部开发人员能否快速学习使用很关键,这要求ESB尽可能使用所有Java开发人员都熟悉的常用工具,如Maven、Eclipse、JUnit和Spring。用XML配置模型(类似于Spring)来定义逻辑,自定义代码可以用各种语言编写,包括Java、Groovy、JavaScript、Ruby或Python。此外,新开发人员能否通过快速掌握可视化开发环境。
4.扩展性优秀ESB往往能够在环境中进行水平扩展,无需重复投入。例如:国外知名得Mule 的运行时环境可以轻松地嵌入到应用程序中,或者嵌入到应用服务器中。除此之外,还提供了对 JUnit 的支持,使其可以嵌入到 JUnit 测试用例中。这些功能非常有用,因为它意味着您可以为将在开发人员笔记本电脑上运行且可以集成到持续构建过程中的集成创建可重复的单元测试。
5.通用性虽然 XML 十分常见,但在许多场景下,您可能会希望使用 JSON、文件、 Java 对象等。不同类型数据映射、转化和处理等能力需要健全。
新一代混合集成平台如果您希望一站式解决组织内外部所有应用和数据集成需求,那么数环通更适合。数环通是一个集成平台即服务(iPaaS),可让您更高效的实现集成开发。并提供了一个多租户的弹性平台,目前已经连接到1000多个应用和服务,并支持连接到您的本地应用程序。
关于ESB与iPaaS差异,详见:iPaaS VS ESB总线 | 差异及优劣势分析