2016-09-09 62 views
0

考慮我有這有些簡單化服務優化微服務與其他域的數據

  1. 用戶服務
  2. DiscussionGroup-服務

一個DiscussionGroup有用戶作爲成員進行查詢。

所有這些服務都有自己的DB。

UI現在要列出特定DiscussionGroup的所有用戶(姓名,個人資料圖片等)。 每組可能有1000個用戶,所以結果應該是可分頁的。

在整體方法中,我會在帶有DiscussionGroupMember表的UserDAO中完成DB連接。但是由於數據庫是分開的,所以不能再做了。

以表演的方式解決這個問題的最佳策略是什麼?我應該考慮爲這個查詢添加第三個服務嗎?

回答

0

閱讀http://microservices.io/patterns/data/database-per-service.html聲明後:

是落實加入數據的查詢,現在是在多個數據庫是具有挑戰性的。有多種解決方案:

應用程序端連接 - 應用程序執行連接而不是數據庫。例如,服務(或API網關)可以通過首先從客戶服務中檢索客戶,然後查詢訂單服務以返回客戶的最近訂單來檢索客戶及其訂單。

命令查詢責任分離(CQRS) - 維護一個或多個包含來自多個服務的數據的物化視圖。視圖由訂閱每個服務在更新其數據時發佈的事件的服務保存。例如,在線商店可以實施查詢,通過維護加入客戶和訂單的視圖來查找特定地區的客戶及其近期訂單。該視圖由訂閱客戶和訂單事件的服務更新。

我認爲CQRS方法在服務請求/秒方面表現最佳。這是因爲用戶服務可能包含需要在列表查詢中返回的確切數據的物化視圖。物化視圖將更新爲來自DiscussionGroup-Service的事件內容。