[英]Shared data across multiple microservices
我有以下情況:
您可以通過application-service創建一個應用程序。 在創建應用程序之前,需要檢查特定信息。 該信息是分布式的,只能通過用戶服務和產品服務訪問。
第一個想法是通過服務總線通過所有服務發送消息,並通過所有必要的數據對其進行擴展,並在應用程序服務中最后再次處理數據:
->應用程序服務->用戶服務->產品服務->應用程序服務
第二個想法是將所有相關數據冗余存儲在所有服務中。 意味着應用程序服務具有用戶和產品數據的副本。
兩種想法都不對。
有沒有更好的方法?
在您所描述的面向服務的體系結構中,在多個服務中復制數據是完全正常的,每個服務都擴展了特定於該服務的核心實體。
不過,我建議您重新考慮您的服務范圍。 服務是特定業務流程的技術授權。 服務並非旨在與業務數據保持一致。
例如,您的Product Service
和User Service
聽起來像業務數據,而Application-Service
聽起來范圍太廣,而又不了解更多信息。
考慮一個需要有關產品信息的Order-Service
。 它可能會訂閱來自Product-Service
ProductCreated
事件,以使用產品信息填充自身,盡管可能只是一個ProductID。 Order-Service
不需要知道產品的名稱,描述,價格(可以在Billing
服務中找到)等。
由於服務是業務流程的唯一授權,因此它也應該擁有用戶界面。 復合UI模式允許將包含來自多個服務的組件的單個頁面放出來。 Application-Service
將托管頁面和將組件拉在一起的膠水。 有關這方面的更多信息,我發現Micro Frontends很不錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.