本文是在雲平臺架構實踐(參考這裏)中對於如何拆分微服務的一些經驗總結。html
業務原則
- 單一責任原則:對於一個微服務而言,具備有限的業務範圍,能夠幫助咱們知足服務開發和交付的敏捷性;
- 適當的邊界:關注微服務的功能範圍,一個服務的大小應該等於知足某個特定業務能力所須要的大小;
- 業務分層: 從總體規劃上把業務分層,造成單向依賴,避免微服務之間的網狀依賴關係;
- 顆粒度遞增:設計初期先把業務劃分到儘量細,而後依據其它原則合併到適當顆粒度;
- 非惟一依賴:至少被2個以上其它微服務依賴的功能模塊,纔有必要獨立成一個微服務。
技術原則
- 部署獨立性:能獨立於其它微服務部署,一個微服務故障不影響其它微服務;
- 動態擴展:每一個微服務均可以動態的進行x軸和z軸的擴展,並適應雲環境下的自動化部署;( 參考這裏 )
- 領域和應用解耦:提供數據操做能力的領域服務和執行業務邏輯的應用服務解耦;
- 避免產生頻繁的跨庫查詢;
- 避免產生頻繁的分佈式事務。
治理原則
- 在業務分層的基礎上,根據業務細分規則,對微服務分組;
- 各個分組之間經過API網關集成;
- 經過API網關實現級輕量級消息路由,鑑權;
- 運行時管理,如服務降級,限流,監控等可在API網關實現,讓微服務功能純粹;
- 避免經過數據庫集成;
- 避免部署多個版原本兼容。
相關資料
微服務架構風格數據庫