微服務間數據跨庫關聯

在微服務環境下,不同服務之間會出現數據庫獨立情況,不可避免的需要跨庫關聯JOIN。例如:訂單服務、商品服務、用戶服務等,在獨立分庫後分別對應訂單數據庫、商品數據庫、用戶數據庫。在查詢訂單是需要攜帶用戶信息+商品信息,就出現了跨庫join的使用場景。

解決方案:

1、數據冗餘:在訂單數據庫訂單表中,保存商品和用戶完整信息。優點:sql簡單且性能高。缺點:空間浪費且商品信息更新需要同步。

2、SQL語句級別的跨庫:在select語句中直接連接其他數據庫表實現join。優點:簡單對系統改動小。缺點:影響數據庫性能。

3、基礎信息公共表:商品表、用戶表等基礎信息在每個數據都保存一份。優點:sql簡單且性能高。缺點:空間浪費且需要數據同步。同步方案:定時任務、Cancl監聽表等。

4、MyCat、ShardingJdbc等中間件。

5、分別調用各服務API獲取信息後,代碼遍歷統一組裝Object。注意:減少IO/SQL的次數。使用過期緩存減少遠程調用、查詢和組裝的頻率。利用數據結構特點通過代碼實現SQL代碼處理大數據。

     缺點:代碼量大且數據量大時組裝耗時大。推薦利用各種數據結構特點、多線程異步分治組裝Object提高效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章