🔍目的
用户对聚合器服务进行一次调用,然后聚合器将调用每个相关的微服务。
🔍解释
真实世界例子
网络市场需要有关产品及其当前库存的信息。 它调用聚合服务,聚合服务依次调用产品信息微服务和产品库存微服务,返回组合信息。
通俗描述
聚合器微服务从各种微服务中收集数据,并返回一个聚合数据以进行处理。
维基百科
聚合器微服务调用多个服务以实现应用程序所需的功能。
程序示例
定义产品数据模型
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}
🔍类图
🔍适用场景
当需要各种微服务的统一API时,无论客户端设备如何,都可以使用Aggregator微服务模式。