4.2 KiB
title, shortTitle, category, language, tag
| title | shortTitle | category | language | tag | |||
|---|---|---|---|---|---|---|---|
| Aggregator Microservices | Aggregator Microservices | Architectural | ar |
|
الهدف
يقوم المستخدم بإجراء مكالمة واحدة إلى خدمة المجمع، ومن ثم يقوم المجمع بالاتصال بكل خدمة ميكروسيرفيس ذات صلة.
الشرح
مثال من العالم الواقعي
يحتاج سوقنا الإلكتروني إلى معلومات حول المنتجات والمخزون الحالي. يقوم بإجراء مكالمة إلى خدمة المجمع التي بدورها تتصل بخدمة ميكروسيرفيس المعلومات الخاصة بالمنتج وخدمة ميكروسيرفيس المخزون للمنتج التي تعيد المعلومات مجمعة.
ببساطة
يقوم ميكروسيرفيس المجمع بجمع البيانات من عدة ميكروسيرفيسات ويعيد النتيجة مجمعة لمعالجتها.
يقول StackOverflow
يقوم ميكروسيرفيس المجمع بالاتصال بعدة خدمات لتحقيق الوظيفة المطلوبة من التطبيق.
مثال برمجي
لنبدأ بنموذج البيانات. هنا هو Product.
public class Product {
private String title;
private int productInventories;
// getters and setters ->
...
}
بعد ذلك، يمكننا تقديم ميكروسيرفيسنا Aggregator (مجمع الميكروسيرفيسات). يحتوي على 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 الخاصة بنا Aggregator تُرجع معلومات المنتج.
curl http://localhost:50004/product
{"title":"The Product Title.","productInventories":5}
مخطط الفئة
قابلية التطبيق
استخدم نمط تجميع الميكروسيرفيسات (Aggregator Microservices) عندما تحتاج إلى واجهة برمجة تطبيقات موحدة لعدة ميكروسيرفيسات، بغض النظر عن جهاز العميل.
