1. 程式人生 > >四、SpringCloud之服務拆分分析

四、SpringCloud之服務拆分分析

1、微服務拆分的起點和終點

  • 起點:既有架構的形態(將一個已有的架構轉化為微服務架構)
  • 終點:好的架構不是設計出來的,而是進化來的(一直在演進ing)

2、業務形態不適合微服務的

  • 系統中包含很多強事務場景
  • 業務相對穩定,迭代週期長
  • 訪問壓力不大,可用性要求不高

3、康威定律

  • 任何組織在設計一套系統(廣義概念上的系統)時,所交付的設計方案在結構上都與該組織的溝通結構保持一致。(溝通的問題會影響系統的設計)

4、擴充套件立方模型

  • X軸的伸縮:由負載均衡器後執行的多個拷貝構成。如果有N份拷貝,每份拷貝處理1/N的負載。
  • Y軸的伸縮:Y軸伸縮將應用分成多份不同的服務,每份服務負責一個或多個緊密相關的功能。
  • Z軸的伸縮:使用Z軸伸縮的話,每個伺服器執行一份完全相同的程式碼,每個伺服器只負責資料的一個子集。

5、服務拆分方法

服務拆分關鍵地方:功能和資料

1.拆功能

  • 單一職責(每個服務只負責業務功能的一個單獨的部分),鬆耦合(服務之間耦合度低,修改一個服務不用導致另一個服務跟著修改),高內聚(服務內部相關的行為都聚集在一個服務內,而不是分散在不同的服務中)
  • 關注點分離:按職責(給服務進行分類,比如訂單、商品等)、按通用性(一些基礎元件,與具體的業務無關的也可劃分成單獨的服務,比如訊息服務,使用者服務)、按粒度級別(微服務並不是越小越好,這個比較難把握)

2.服務和資料的關係

  • 先考慮拆分業務功能,再考慮拆分業務功能對應的資料。
  • 無狀態服務(一個數據需要被多個服務共享,才能完成一個請求,這個資料就可以稱為狀態。依賴這個狀態資料的服務稱為有狀態服務,反之無狀態服務):