Skip to content

Latest commit

 

History

History
133 lines (71 loc) · 12 KB

File metadata and controls

133 lines (71 loc) · 12 KB

十五、企业应用集成及其模式

在本书中,我们介绍了如何实现企业应用。它们要么是实现了许多组件以提供特定功能集的大型整体,要么是由若干小型服务组成的基于微服务的应用,所有这些都是为了提供某种功能,并通过网络相互交互,根据业务需求提供输出。

但是,在任何企业中,我们开发的应用很少是唯一可能出现的应用。相反,在大多数情况下,企业基础设施将由许多应用组成,这些应用具有。。。

技术要求

本章的后续内容不需要任何专用工具,也不需要在开发系统上安装特定软件。但是,了解一些中间件和企业服务总线解决方案的功能将有助于理解本章的上下文。

EAI 的必要性

在任何大型企业中,都可能存在许多用于解决特定问题域的应用。这些系统中的每一个都只能解决一组问题。通常,这种方法对于在企业内部构建应用是可取的,因为现在应用可以使用最好的可用技术堆栈来解决其领域的问题。

但要从这些应用中产生任何有用的业务影响,通常情况下,这些应用需要通过一种或另一种方式相互通信,以便促进可能存在于一个应用中且另一个应用需要的数据交换。

但是这种不同应用的集成是一项具有挑战性的任务,因为。。。

点对点集成

解决此问题的方法之一是实现应用之间的点对点集成。这意味着每个应用都有一组连接器,允许它与另一个应用通信。对于需要相互通信的每一对应用,都需要有一个单独的连接器来促进应用之间的通信。

当需要相互通信的应用数量较少时,这种方法是完全合适的。但随着企业的发展,其需求也在增长,这意味着在基础设施中调试新的应用。现在,随着应用数量的增加,促进不同应用之间通信所需的连接器数量也将开始增加,达到基础设施变得过于复杂而无法管理和维护的程度。

为了能够在企业内部集成大量应用(这些应用可能会随着时间的推移而增长),我们可能需要一些更灵活的东西,以帮助我们标准化这些应用之间的通信方式。转向 EAI 正是我们所关注的那种架构,因为它旨在帮助我们实现这些目标。那么,让我们看看现在的 EAI 为我们准备了什么。

走向 EAI

当我们致力于标准化在我们的基础架构中运行的不同应用之间的通信方式以及它们存储数据的方式时,EAI 方法确实为我们提供了一个不仅在本质上灵活而且可扩展的选项,而不会给基础架构带来不必要的复杂性。

EAI 模式为我们提供了一个由工具和技术组成的框架,帮助我们标准化不同应用之间的通信方式。EAI 框架通常附带一些组件,这些组件可以促进应用之间的数据交换以及从一种格式到另一种格式的转换,并充当不同应用之间的粘合层。。。

EAI 的传统方法

在 EAI 的早期,应用需要以各种格式相互交互,其中可能包括通信一些信息或交换数据。为了促进这种交流,这些组织提出了 EAI 的中心辐射模型。

在这个中心辐射模型中,有一个基于路由器的中间件组件和事件的概念。每当其中一个应用的状态发生某些更改时,该应用将用于生成事件。其他应用订阅了他们感兴趣的事件流。

现在,每当生成新事件时,路由器负责将事件传递给相关应用,处理从一种格式到另一种格式的数据转换,以便应用可以相互通信。在这种方法中,路由器成为促进不同应用之间集成的中心点。

路由器提供了许多功能,例如:

  • **适配器和 SDK:**为了让应用与路由器通信以引发事件,它们需要某种胶水,以便于应用与路由器之间的连接。路由器中间件提供的适配器用于提供这一必要的粘合层。如果应用没有受支持的适配器,路由器中间件将提供 SDK 以促进适配器的开发。
  • **消息转换:**当生成新事件时,路由器根据一组预定义的规则,用于将与事件关联的消息转换为可供其他应用使用的格式。这种功能对于促进两个不同应用之间的通信非常重要,每个应用都有自己的数据存储格式和通信样式。
  • **智能路由:**为了让应用彼此无缝地工作,需要保证正确的事件到达正确的目标受众。路由器中间件用于根据哪个应用生成事件以及哪个应用对侦听该事件感兴趣来实现智能路由,以便将作为事件一部分生成的消息传递给正确的收件人。

这种方法提供了一种很好的机制,可以消除企业基础架构中不必要的复杂性,如果每个应用都必须直接与其他应用通信、管理它们自己的连接器并处理数据一致性,那么企业基础架构就会开发出来。然而,通过这种方法,路由器促进了不同应用之间的通信。

但是,尽管这种方法具有所有好处,但它也存在以下一些严重缺陷:

  • **单点故障:**EAI 的代理模型被证明是单点故障。如果路由器中间件宕机,不同应用之间的所有通信都将停止。
  • **集中逻辑:**数据转换的逻辑以及数据的路由都集中在一个路由器内。这使得代理成为一个复杂的组件,使得代理的操作和维护成为一项困难的任务。
  • **可扩展性差:**当路由器上的负载增加时,路由器对消息的处理会受到影响。这会导致不同应用之间的数据状态不一致。此外,如果试图相互连接的应用位于世界各地的不同地理位置,则拥有一个位于中心位置的路由器将成为路由器地理可扩展性的障碍。
  • **专有解决方案:**在早期,基于路由器的集线器和辐条式集成企业应用的方法存在时,大多数解决方案在本质上是专有的,只支持一部分供应商。要从不受支持的供应商集成中获得一些应用,这对开发人员来说是一个巨大的问题,他们需要基于提供的 SDK 编写和维护自己的适配器。

所有这些问题都要求实现一种更好的方法,这种方法不会遇到与基于路由器的方法相同的问题。最终,企业开始转向面向服务的架构SOA模型),并引入了企业服务总线ESB用于在 SOA 内部集成这些不同的服务。所以,让我们来看看 ESB 是如何改变 EAI 发生的方式的。

ESB 的介绍

随着时代的发展,企业转向了一种新的应用开发模式。此模型用于将应用建模为服务,其中每个服务用于提供一组特定的业务功能。因此,例如,在企业中,将有一个工资单服务,该服务将提供与员工工资单管理相关的所有必要功能,例如处理新员工的数据,记录他们获得的工资以及生成每月工资单。

现在,这些服务需要相互集成,以便促进这些服务之间的数据交换。此时此刻,企业需要一些东西。。。

EAI 中的模式

EAI 是一种方法,它具有多个与之相关的模式,这些模式控制应用的集成方式。使用哪种模式通常取决于企业基础架构中存在的应用类型以及集成中存在的挑战。

所以,让我们看看这些模式,看看它们通常是如何实现的。

整合模式

在 EAI 期间,集成模式定义了应用将如何相互集成。这可以定义不同的应用将如何相互通信以及这些应用将如何转换数据。因此,让我们来看看两种广泛的应用集成的方式。

调解模式

在 EAI 的中介模式中,有一个中心组件负责事件的传播。例如,在基于代理的中间件模型中,每当一个应用生成事件时,该事件都由中间件代理处理,然后中间件代理负责将该事件传播到对该事件感兴趣的其他应用。

在这种类型的集成模式中,通常应用直接相互交互,由中间件代理提供便利,中间件代理转发发生的事件,然后由其他应用的事件处理程序负责。

通常实现中介模式的另一种集成方法是消息总线方法,其中消息总线充当不同应用之间的中介,相互传递消息以促进它们之间的通信。

联邦模式

就功能而言,联合模式与中介模式完全相反。虽然中介模式侧重于应用之间的直接通信,而不提供应用之间的任何障碍,但联合模式通常限制应用之间的自由通信。

在联合模式内部,有一个中间件,它公开了一组标准的端点,其他应用可以通过这些端点与之通信。一旦应用向联合中间件的 API 发出请求,联合中间件将负责转换该请求并将其传递给后端应用。后端应用处理请求后,联合中间件。。。

访问模式

访问模式定义了在企业基础架构内的应用中如何访问数据。

通常遵循两种访问模式:异步和同步访问模式。让我们来看看这些模式的目的。

异步访问模式

异步访问模式遵循 fire and forget 方法进行数据访问。在这种情况下,一旦中间件转发了请求,它就不会等待该请求的响应返回,而是继续处理它正在接收的新请求。

在中介方法中通常遵循异步访问模式,其中路由器中间件一旦通知某个事件的发生,就会向前传播该事件并忘记该事件,而不等待其回复。

消息总线模型也是如此;消息总线一旦传递了消息,就不关心所生成消息的响应,因此使该过程成为一个。。。

同步访问模式

同步访问模式的工作方式与异步模式相反。同步访问模式不会转发请求并忘记响应,而是发出请求,然后等待其他应用生成响应。

联邦集成通常遵循这种模式,其中中间件充当中间层,处理对其管理的后端应用的访问。

例如,在基于网关的模式中,中间件通常接收请求,将请求转发给后端应用,然后等待响应到达,然后再继续下一个请求。

这些只是管理 EAI 过程的几个基本模式。目前仍有近 65 种 EAI 模式在使用,它们促进了 EAI 的概念。

现在,让我们来看看防止不同企业应用之间成功集成的一些常见问题。

EAI 中的问题

企业应用的成功集成通常受到许多因素的影响;让我们来看一看:

  • **专有数据格式:**一些应用使用自己的专有数据格式,但很少有关于如何与它们集成的文档,这妨碍了应用之间的集成或导致应用集成质量低下,因此导致了一些问题。
  • **数据一致性问题:**维护数据一致性可能成为 EAI 的一个问题。当每个应用都维护自己的数据源时,跨不同数据源的数据一致性可能会出现问题,特别是当中间件正在经历重载时,会导致。。。

总结

在本章中,我们了解了为什么 EAI 对于企业业务流程的正常运行是必要的。一旦我们理解了 EAI 的必要性,我们就开始理解 EAI 的方法,在这里我们探讨了应用的点到点集成,以及为什么点到点集成的过程是有问题的。然后,我们探索了通过使用代理中间件模型实现 EAI 的传统方法,然后继续讨论模型如何随着 SOA 的出现而转变,以及 ESB 如何取代基于代理的模型。

然后,我们继续了解 EAI 中的不同模式,了解连接不同应用的中介和联合集成模式,然后了解不同的访问模式(如异步和同步访问)是如何,将信息从一个应用传输到另一个应用的工作。在本章的结尾,我们探讨了困扰企业中成功集成应用的一些问题。

在我们进入下一章时,我们将了解微服务的引入如何改变了 EAI 的格局,并取代了 ESB 的使用,以及它现在如何被分布式消息代理和 API 网关所取代。

问题

  1. 点到点集成过程中通常会遇到哪些问题?
  2. ESB 如何将不同类型的应用连接在一起?
  3. 促进应用集成方法的 EAI 模式有哪些不同类型?