Files
Tien Nguyen Minh 31b7df23d2 translation: Add aggregator microservices pattern translation #2288 (#2582)
* [Translate, Vietnamese] (Add) aggregator microservices pattern translation

* [Translate, Vietnamese] (Fix) comment suggestions
2023-10-15 16:25:22 +03:00

3.8 KiB

title, category, language, tag
title category language tag
Microservices Tổng Hợp Architectural vi
Cloud distributed
Decoupling
Microservices

Mục Đích

Người dùng chỉ cần thực hiện một lần gọi duy nhất đến dịch vụ tổng hợp, sau đó dịch vụ tổng hợp sẽ gọi dịch vụ con tương ứng.

Giải Thích

Ví dụ thực tế

Trang web thị trường của chúng ta cần thông tin về sản phẩm và tồn kho hiện tại của chúng. Nó thực hiện gọi đến dịch vụ tổng hợp, sau đó dịch vụ tổng hợp gọi dịch vụ thông tin sản phẩm và dịch vụ tồn kho sản phẩm, cuối cùng trả lại thông tin kết hợp.

Nói đơn giản hơn

Microservices Tổng Hợp thu thập các phần dữ liệu từ các dịch vụ con khác nhau và trả về một tổng hợp để xử lý.

Theo Stack Overflow

Microservices Tổng Hợp gọi nhiều dịch vụ để đạt được chức năng được yêu cầu bởi ứng dụng.

Mã nguồn mẫu

Hãy bắt đầu từ mô hình dữ liệu. Đây là lớp Product của chúng ta.

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

Tiếp theo, chúng ta có thể giới thiệu Microservices Aggregator của chúng ta. Nó chứa các khách hàng ProductInformationClientProductInventoryClient để gọi các dịch vụ con tương ứng.

@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;
  }
}

Dưới đây là bản thể của việc triển khai dịch vụ thông tin sản phẩm. Dịch vụ tồn kho cũng tương tự như thế, nó chỉ trả về số lượng tồn kho.

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

Bây giờ, việc gọi Aggregator API REST của chúng ta sẽ trả về thông tin sản phẩm.

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

Sơ Đồ Lớp

alt text

Các Trường Hợp Sử Dụng

Sử dụng mẫu Microservices Tổng Hợp khi bạn cần một API chung cho các dịch vụ Microservices khác nhau, bất kể thiết bị của khách hàng.

Người Đóng Góp