我將爲我的Datawarehouse應用程序應用微服務。在應用程序中有4個主要的微服務:避免微服務中的瓶頸
1)數據服務:將外部數據源導入/導出到DWH並從DWH查詢數據。
2)分析服務:圖表的可視化上UI
3)機器學習:用於推薦系統
4)報告:用於報告生成
如下圖:
每個服務都有自己的DB,它們通過TCP和Th直接相互通信ift序列化。這裏的問題是Data Service受到來自其他服務的高負載,並且可能成爲應用程序的SPOF。 DWH中的數據也很大(可能高達數百萬記錄)。在這種情況下如何避免數據服務的瓶頸?或者我如何定義一個正確的有界上下文來避免瓶頸?
我可以讓其他微服務(如Analytics,Reports,ML)直接訪問DWH數據庫嗎?所以在這種情況下,它將成爲「一個數據庫,多個服務」。因爲DWH中的數據很大並且數據定期更新。 – Barcelona
@Barcelona我已更新答案 – Set
DataService(DS)僅向其他服務提供數據訪問邏輯(基本CRUD),並且不提供其他處理邏輯。其他處理邏輯(如導入,導出...)用於客戶端調用。我想讓其他服務與DS通信的原因是因爲我想隱藏如何訪問,查詢和更新DWH到其他服務的邏輯。其他服務只需調用DS即可獲取或更新數據。 – Barcelona