跳至主要內容
Aggregator Microservices

意图

用户对聚合器服务进行一次调用,然后聚合器将调用每个相关的微服务。

解释

真实世界例子

我们的网络市场需要有关产品及其当前库存的信息。 它调用聚合服务,聚合服务依次调用产品信息微服务和产品库存微服务,返回组合信息。

通俗地说

聚合器微服务从各种微服务中收集数据,并返回一个聚合数据以进行处理。

Stack Overflow上说

聚合器微服务调用多个服务以实现应用程序所需的功能。


iluwatar大约 2 分钟ArchitecturalCloud distributedDecouplingMicroservices
API Gateway

目的

API网关将所有对微服务的调用聚合到一起。用户对API网关进行一次调用,然后API网关调用每个相关的微服务。

解释

使用微服务模式,客户端可能需要来自多个不同微服务的数据。 如果客户端直接调用每个微服务,则可能会导致更长的加载时间,因为客户端将不得不为每个调用的微服务发出网络请求。此外,让客户端调用每个微服务会直接将客户端与该微服务相关联-如果微服务的内部实现发生了变化(例如,如果将来某个时候合并了两个微服务),或者微服务的位置(主机和端口) 更改,则必须更新使用这些微服务的每个客户端。

API网关模式的目的是缓解其中的一些问题。 在API网关模式中,在客户端和微服务之间放置了一个附加实体(API网关)。API网关的工作是将对微服务的调用进行聚合。 客户端不是一次单独调用每个微服务,而是一次调用API网关。 然后,API网关调用客户端所需的每个微服务。


iluwatar大约 3 分钟ArchitecturalCloud distributedDecouplingMicroservices
Data Access Object

目的

对象为某种类型的数据库或其他持久性机制提供了抽象接口。

解释

真实世界例子

有一组客户数据需要持久化到数据库中。 我们需要整个额外的增删改查操作以便操作客户数据。

通俗的说

DAO是我们通过基本持久性机制提供的接口。

维基百科说

在计算机软件中,数据访问对象(DAO)是一种模式,可为某种类型的数据库或其他持久性机制提供抽象接口。


iluwatar大约 2 分钟ArchitecturalData access
Data Bus

含义

数据总线模式(译者:实际上,就是 Event-Bus 消息总线模式)允许在一个应用程序的组件之间收发消息/事件,而不需要这些组件相互感知,它们只需要知道所发送/接收的消息/事件的类型即可。

类图

Data Bus pattern

适用场景

可以在以下场景使用数据总线模式:

  • 你希望由你的组件自己决定要接收哪些信息/事件
  • 你希望实现多对多的通信
  • 你希望你的组件不需要感知彼此

iluwatar小于 1 分钟ArchitecturalDecoupling
Data Mapper

含义

一个用于在持久化对象和数据库之间传输数据的映射器,同时保持它们之间和映射器本身的独立性。

类图

Data Mapper

适用场景

数据映射器适用于以下场景:

  • 当你想把数据对象从数据库访问层解耦时时
  • 当你想编写多个数据查询/持久化实现时

引用


iluwatar小于 1 分钟ArchitecturalDecoupling
Data Transfer Object

目的

次将具有多个属性的数据从客户端传递到服务器,以避免多次调用远程服务器。

解释

真实世界例子

我们需要从远程数据库中获取有关客户的信息。 我们不使用一次查询一个属性,而是使用DTO一次传送所有相关属性。

通俗的说

使用DTO,可以通过单个后端查询获取相关信息。

维基百科说

在编程领域,数据传输对象(DTO)是在进程之间承载数据的对象。 使用它的动机是,通常依靠远程接口(例如Web服务)来完成进程之间的通信,在这种情况下,每个调用都是昂贵的操作。

因为每个(方法)调用的大部分成本与客户端和服务器之间的往返时间有关,所以减少调用数量的一种方法是使用一个对象(DTO)来聚合将要在多次调用间传输的数据,但仅由一个调用提供。


iluwatar大约 2 分钟ArchitecturalPerformance
Unit Of Work

又被称为

工作单元

目的

当一个业务事务完成时,所有的更新都作为一个大的工作单元一次性发送,以最小化数据库的往返次数进行持久化。

解释

现实世界例子

武器商人拥有一个包含武器信息的数据库。
全城的商贩们都在不断地更新这些信息,这导致数据库服务器的负载很高。
为了使负载更易于管理,我们应用了工作单元模式,将许多小的更新批量发送。

用直白的话来说

工作单元将许多小的数据库更新合并成一个批次。
以优化往返次数。


iluwatar大约 3 分钟ArchitecturalData accessPerformance