意图
用户对聚合器服务进行一次调用,然后聚合器将调用每个相关的微服务。
解释
真实世界例子
我们的网络市场需要有关产品及其当前库存的信息。 它调用聚合服务,聚合服务依次调用产品信息微服务和产品库存微服务,返回组合信息。
通俗地说
聚合器微服务从各种微服务中收集数据,并返回一个聚合数据以进行处理。
Stack Overflow上说
聚合器微服务调用多个服务以实现应用程序所需的功能。
用户对聚合器服务进行一次调用,然后聚合器将调用每个相关的微服务。
真实世界例子
我们的网络市场需要有关产品及其当前库存的信息。 它调用聚合服务,聚合服务依次调用产品信息微服务和产品库存微服务,返回组合信息。
通俗地说
聚合器微服务从各种微服务中收集数据,并返回一个聚合数据以进行处理。
Stack Overflow上说
聚合器微服务调用多个服务以实现应用程序所需的功能。
API网关将所有对微服务的调用聚合到一起。用户对API网关进行一次调用,然后API网关调用每个相关的微服务。
使用微服务模式,客户端可能需要来自多个不同微服务的数据。 如果客户端直接调用每个微服务,则可能会导致更长的加载时间,因为客户端将不得不为每个调用的微服务发出网络请求。此外,让客户端调用每个微服务会直接将客户端与该微服务相关联-如果微服务的内部实现发生了变化(例如,如果将来某个时候合并了两个微服务),或者微服务的位置(主机和端口) 更改,则必须更新使用这些微服务的每个客户端。
API网关模式的目的是缓解其中的一些问题。 在API网关模式中,在客户端和微服务之间放置了一个附加实体(API网关)。API网关的工作是将对微服务的调用进行聚合。 客户端不是一次单独调用每个微服务,而是一次调用API网关。 然后,API网关调用客户端所需的每个微服务。
对象为某种类型的数据库或其他持久性机制提供了抽象接口。
真实世界例子
有一组客户数据需要持久化到数据库中。 我们需要整个额外的增删改查操作以便操作客户数据。
通俗的说
DAO是我们通过基本持久性机制提供的接口。
维基百科说
在计算机软件中,数据访问对象(DAO)是一种模式,可为某种类型的数据库或其他持久性机制提供抽象接口。
数据总线模式(译者:实际上,就是 Event-Bus 消息总线模式)允许在一个应用程序的组件之间收发消息/事件,而不需要这些组件相互感知,它们只需要知道所发送/接收的消息/事件的类型即可。
可以在以下场景使用数据总线模式:
一个用于在持久化对象和数据库之间传输数据的映射器,同时保持它们之间和映射器本身的独立性。
数据映射器适用于以下场景:
次将具有多个属性的数据从客户端传递到服务器,以避免多次调用远程服务器。
真实世界例子
我们需要从远程数据库中获取有关客户的信息。 我们不使用一次查询一个属性,而是使用DTO一次传送所有相关属性。
通俗的说
使用DTO,可以通过单个后端查询获取相关信息。
维基百科说
在编程领域,数据传输对象(DTO)是在进程之间承载数据的对象。 使用它的动机是,通常依靠远程接口(例如Web服务)来完成进程之间的通信,在这种情况下,每个调用都是昂贵的操作。
因为每个(方法)调用的大部分成本与客户端和服务器之间的往返时间有关,所以减少调用数量的一种方法是使用一个对象(DTO)来聚合将要在多次调用间传输的数据,但仅由一个调用提供。
工作单元
当一个业务事务完成时,所有的更新都作为一个大的工作单元一次性发送,以最小化数据库的往返次数进行持久化。
现实世界例子
武器商人拥有一个包含武器信息的数据库。
全城的商贩们都在不断地更新这些信息,这导致数据库服务器的负载很高。
为了使负载更易于管理,我们应用了工作单元模式,将许多小的更新批量发送。
用直白的话来说
工作单元将许多小的数据库更新合并成一个批次。
以优化往返次数。