拆分原則
1.明確服務邊界,狗就好好的啃骨頭,貓就老實拿耗子, 2.服務之間單向無環依賴,分析服務之間的依賴關系,可以是代碼包級別的,也可以是業務邏輯級別的,保證無環才可拆解, 3.互動方式遵循上下游關系,下游葉子節點服務可以呼叫上游介面(HTTP協議),上游節點服務通過事件(事件總線,訊息總線)影響下游系統, 4.最小資料共享,遵循DDD的限界背景關系的分析原則, 5.介面不同時操作背景關系資料,寫操作只能在當前背景關系中,讀同理,不同背景關系的讀取操作需要放在BFF中 注釋:BFF, 所謂BFF其實是Backend for Frontend的簡稱,中文翻譯是為前端而開發的后端,它主要由前端團隊開發(后端微服務一般由后端團隊開發),BFF可以認為是一種適配服務,將后端的微服務進行適配(主要包括聚合裁剪和格式適配等邏輯),向無線端設備暴露友好和統一的API,方便無線設備接入訪問后端服務,實施步驟(ITTO)
1.調整代碼結構,分析模塊間依賴
INPUT: 需要拆分的專案代碼 TOOL&TECH: MCV,MVVM等通用設計架構范式 應用功能代碼層面CDA(http://www.dependency-analyzer.org/) SQL陳述句層面使用DDD分析,每個服務只提供對應領域的表的操作入口 OUTPUT: 專案內部應用包之間的關系結構圖2.架構重構,測驗保護
INPUT: 單元測驗,組件測驗,端到端測驗 TOOL&TECH: 自動化契約測驗Selenium(https://www.selenium.dev/) 介面級別組件測驗,保證組件重構程序中沒有改動介面輸入輸出結構 OUTPUT: 紅綠燈測驗結果3.消除業務代碼依賴
INPUT: 需要拆分的專案代碼 TOOL&TECH: 列舉,工具類,通用類-抽象通用jar 呼叫跨越當前背景關系的介面,資料,命令-通過介面呼叫,遷移到對應背景關系服務中 呼叫多個背景關系的資料-確定原子能力后遷移到BFF層 OUTPUT: 業務代碼依賴拆分4.資料庫拆分
INPUT: 主庫以及備庫 TOOL&TECH: 實時同步備庫資料,切割時服務各自保留自己的資料表,一個用主庫,一個用備庫, OUTPUT: 完成資料庫的物理拆分 參考文獻: 【1】BFF架構https://segmentfault.com/a/1190000020623009 【2】微服務拆分1-必要性和時機選擇https://insights.thoughtworks.cn/microservices-splitting/ 【3】微服務拆分2-原則和實踐程序https://insights.thoughtworks.cn/microservices-splitting/轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/308439.html
標籤:架構設計
上一篇:分布式之配置中心
