0

雖然在標準部署模型中,它們都在同一臺機器上,但我正在構建一個由多個異構服務組成的系統,這些服務可以通過網絡相互通話。用於管理該複雜系統中的實體的UI客戶端應當能夠顯示來自所有包括服務的聚合數據,同時允許在該聚合數據上進行搜索。跨多個服務的數據檢索和搜索

我想知道如何設計在這個系統內的數據檢索,以便它是可擴展的,因爲要搜索的數據量已經很高並且增加了?

我正在考慮兩種方法:

  1. 從需求的所有服務的客戶端查詢數據並聚集在其層的結果。在很多情況下,它必須在來自多個服務的數據之間進行連接,所以我在這裏關注性能。

  2. 以某種方式非規範化服務數據,以方便客戶端查詢,甚至在多個服務數據之間存儲聚合,以便客戶端不必按需連接。很可能,將每個服務的非規範化數據存儲在其自己的數據庫或緩存中會更好,因此更容易將所有非規範化數據保持爲最新。但是,我需要在其他地方將多個服務數據的聚合視圖放在一起,我擔心保持此遠程緩存處於最新狀態的開銷。

任何解決類似問題的現有體系結構的例子或引用將受到高度讚賞。謝謝!

回答

0

擁有一個聚合緩存肯定會有更好的性能,但仔細想想成本 - 同步。最終你的客戶端(或者一些爲客戶端完成這項工作的遠程服務)擁有自己的數據庫,可以與服務數據同步(就像實現自己的數據庫異步拉複製一樣)。檢查從服務檢索的數據如何更改。如果數據沒有被刪除/修改,並且只能添加新的數據,那麼最適合您。如果數據不必一致,這也會更容易。選擇合適的同步機制取決於現有的體系結構和要求。