2014-09-13 54 views
1

在基於REST的微服務體系結構中,在單個實體下分組相關數據的正確方法是什麼?例如,我們可能有一個用戶服務負責管理用戶。此外,我們可能有一個服務負責管理爲這些用戶中的每一個存儲的某種數據(假設我們正在討論這個用戶的物品/庫存)在微服務中分組數據

我們可以將庫存管理服務和用它來創建任何東西的庫存,所以我理想上不希望庫存管理系統要求用戶才能運行。

是否有典型的使用模式可以提供我正在尋找的分組(多個庫存項目給單個所有者)?剩下的端點看起來會支持這樣的體系結構呢?

回答

2

我認爲那裏沒有任何典型的模式。這取決於您的業務流程和實體之間的關係。但有一些一般性陳述。

  1. '實體'服務必須對所有業務流程都是不可知的。
  2. 「實體」服務的功能上下文不得重疊。
  3. 服務實現中不應該有冗餘邏輯。
  4. 如果業務流程不需要它,則不需要爲每個實體創建新服務。
  5. 如果實體之間存在強大的從屬關係,則可以引入包含所有關聯實體的集合以及與之一起運行的新服務。

您可以根據您的解決方案正式檢查大部分這些斷言。

此外,總是可以將一些服務分成兩個新服務。但是,在分析階段您做出的更多努力使您不太可能需要一次拆分服務。

1

「服務」行爲通常轉換爲工廠模式實現不管語義。

阿比方:

POST: yourapi.com/v1/inventory/add/ 
DATA: { 
    userid: 1, 
    products: [ 
    'Canned Chicken Gizzards', 
    'Snake Oil Extract', 
    'Evaporated Water' 
    ] 
} 

工廠類的一面:

InventoryFactory->addProduct((object) product) 

-- also have a method to add products under a user -- 

InventoryFactory->addProducts((array) products, userid)