【设计模式】JAVA Design Patterns——Aggregator Microservices(聚合器微服务模式)

简介: 【设计模式】JAVA Design Patterns——Aggregator Microservices(聚合器微服务模式)

🔍目的


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


🔍解释


真实世界例子

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

通俗描述

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

维基百科

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


程序示例

定义产品数据模型

public class Product {
  private String title;
  private int productInventories;
  // getters and setters ->
  ...
}


生成聚合器服务,包含用于调用相应微服务的客户端ProductInformationClient ProductInventoryClient

@RestController
public class Aggregator {
 
  @Resource
  private ProductInformationClient informationClient;
 
  @Resource
  private ProductInventoryClient inventoryClient;
 
  @RequestMapping(path = "/product", method = RequestMethod.GET)
  public Product getProduct() {
 
    var product = new Product();
    var productTitle = informationClient.getProductTitle();
    var productInventory = inventoryClient.getProductInventories();
 
    //Fallback to error message
    product.setTitle(requireNonNullElse(productTitle, "Error: Fetching Product Title Failed"));
 
    //Fallback to default error inventory
    product.setProductInventories(requireNonNullElse(productInventory, -1));
 
    return product;
  }
}


设置产品信息微服务的精华实现。 库存微服务类似,它只返回库存计数

@RestController
public class InformationController {
  @RequestMapping(value = "/information", method = RequestMethod.GET)
  public String getProductTitle() {
    return "The Product Title.";
  }
}


调用 聚合器 REST API返回产品信息。

curl http://localhost:端口号/product
{"title":"The Product Title.","productInventories":5}


🔍类图

87df1582f177429f9945d006561e1a84.png


🔍适用场景

当需要各种微服务的统一API时,无论客户端设备如何,都可以使用Aggregator微服务模式。


82108c8d813e4565a341ce893bed0393.gif

相关文章
|
17天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
2月前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
75 2
|
2月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
95 2
|
25天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
45 3
|
25天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
47 2
|
2月前
|
设计模式 API 持续交付
深入理解微服务架构:设计模式与实践
【10月更文挑战第19天】介绍了微服务架构的核心概念、设计模式及最佳实践。文章详细探讨了微服务的独立性、轻量级通信和业务能力,并介绍了聚合器、链式和发布/订阅等设计模式。同时,文章还分享了实施微服务的最佳实践,如定义清晰的服务边界、使用API网关和服务发现机制,以及面临的挑战和职业心得。
|
2月前
|
存储 Java 数据库
使用 AuraDB 免费版构建 Java 微服务
使用 AuraDB 免费版构建 Java 微服务
40 11
|
2月前
|
缓存 Java 数据库连接
使用 NCache 将 Java 微服务扩展到极致性能
使用 NCache 将 Java 微服务扩展到极致性能
31 8
|
3月前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
3月前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
78 5