四、SpringCloud之服務拆分分析
阿新 • • 發佈:2018-12-19
1、微服務拆分的起點和終點
- 起點:既有架構的形態(將一個已有的架構轉化為微服務架構)
- 終點:好的架構不是設計出來的,而是進化來的(一直在演進ing)
2、業務形態不適合微服務的
- 系統中包含很多強事務場景
- 業務相對穩定,迭代週期長
- 訪問壓力不大,可用性要求不高
3、康威定律
- 任何組織在設計一套系統(廣義概念上的系統)時,所交付的設計方案在結構上都與該組織的溝通結構保持一致。(溝通的問題會影響系統的設計)
4、擴充套件立方模型
- X軸的伸縮:由負載均衡器後執行的多個拷貝構成。如果有N份拷貝,每份拷貝處理1/N的負載。
- Y軸的伸縮:Y軸伸縮將應用分成多份不同的服務,每份服務負責一個或多個緊密相關的功能。
- Z軸的伸縮:使用Z軸伸縮的話,每個伺服器執行一份完全相同的程式碼,每個伺服器只負責資料的一個子集。
5、服務拆分方法
服務拆分關鍵地方:功能和資料
1.拆功能
- 單一職責(每個服務只負責業務功能的一個單獨的部分),鬆耦合(服務之間耦合度低,修改一個服務不用導致另一個服務跟著修改),高內聚(服務內部相關的行為都聚集在一個服務內,而不是分散在不同的服務中)
- 關注點分離:按職責(給服務進行分類,比如訂單、商品等)、按通用性(一些基礎元件,與具體的業務無關的也可劃分成單獨的服務,比如訊息服務,使用者服務)、按粒度級別(微服務並不是越小越好,這個比較難把握)
2.服務和資料的關係
- 先考慮拆分業務功能,再考慮拆分業務功能對應的資料。
- 無狀態服務(一個數據需要被多個服務共享,才能完成一個請求,這個資料就可以稱為狀態。依賴這個狀態資料的服務稱為有狀態服務,反之無狀態服務):