微服务架构 - 组合模式

软件组合是指构建软件产品的方式。基本上,它涉及高级软件架构图,其中软件的不同模块将为特定业务目标进行通信。在本章中,我们将了解组织中广泛使用的不同软件组合模式。在微服务中,我们将每个功能拆分为一个进程。这些服务中的每一个都是独立的,并且本质上是全栈的。

功能分解在构建微服务中起着重要作用。它为您的应用程序提供了敏捷性、灵活性和可扩展性。

聚合器模式

聚合器模式是在开发微服务时可以实现的最简单的 Web 模式。在此组合模式中,一个简单的 Web 模块将充当负载平衡器,这意味着它将根据要求调用不同的服务。下图描绘了一个具有聚合器设计的简单微服务 Web 应用程序。如下图所示,"聚合器"负责逐个调用不同的服务。如果我们需要对服务 A、B 和 C 的结果应用任何业务逻辑,那么我们可以在聚合器本身中实现业务逻辑。

聚合器模式

聚合器可以再次作为另一种服务暴露给外部世界,其他人可以在需要时使用该服务。在开发聚合器模式 Web 服务时,我们需要记住,我们的每项服务 A、B 和 C 都应该有自己的缓存层,并且本质上应该是全栈的。

代理模式

代理微服务模式是聚合器模型的一种变体。在这个模型中,我们将使用代理模块而不是聚合模块。代理服务可以单独调用不同的服务。

代理模式

在代理模式中,我们可以通过提供转储代理层来构建一个额外的安全级别。该层的作用类似于接口。

链式模式

顾名思义,这种组合模式将遵循链式结构。在这里,我们不会在客户端和服务层之间使用任何东西。相反,我们将允许客户端直接与服务进行通信,并且所有服务都将以这样的方式链接起来,即一个服务的输出将成为下一个服务的输入。下图显示了一个典型的链式模式微服务。

链式模式

这种架构的一个主要缺点是,客户端将被阻止,直到整个过程完成。因此,强烈建议将链的长度保持在尽可能短的水平。

分支微服务模式

分支微服务是聚合器模式和链模式的扩展版本。在这种设计模式中,客户端可以直接与服务通信。此外,一个服务可以同时与多个服务通信。以下是分支微服务的示意图。

分支微服务模式

分支微服务模式允许开发人员动态配置服务调用。所有服务调用都将以并发方式进行,这意味着服务 A 可以同时调用服务 B 和 C。

共享资源模式

共享资源模式实际上是前面提到的所有类型模式的集合。在这种模式下,客户端或负载平衡器将在必要时直接与每个服务通信。这是大多数组织广泛遵循的最有效的设计模式。以下是共享资源设计模式的示意图。

共享资源模式