本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S 型hared-database-per-service 圖案
在該 shared-database-per-service 模式中,多個微服務共享相同的數據庫。在採用此模式之前,您需要仔細評估應用程式架構,並確保避免使用熱表格 (在多個微服務之間共用的單一資料表)。您的所有資料庫變更也必須向後相容;例如,只有當所有微服務的目前和舊版都未參考物件時,開發人員才能卸除資料行或資料表。
在下圖中,所有微服務都會共用保險資料庫,而 IAM 政策則提供對資料庫的存取權。這會建立開發時間耦合;例如,「銷售」微服務中的變更需要使用「客戶」微服務協調結構描述變更。這種模式不會減少開發團隊之間的依賴關係,並引入了運行時耦合,因為所有微服務共享相同的數據庫。例如,長時間運行的「銷售」交易可以鎖定「客戶」表,這會阻止「客戶」交易。
你應該考慮使用這種模式,如果:
-
您不希望對現有代碼庫進行太多重構。
-
您可以使用提供原子性、一致性、隔離和持久性 (ACID) 的交易來強制執行資料一致性。
-
您只想維護和操作一個數據庫。
-
實作 database-per-service 模式很困難,因為您現有的微服務之間的相互依存關係。
-
您不想完全重新設計現有的資料層。