四種常用的微服務架構拆分方式

語言: CN / TW / HK

微服務架構並無標準架構,不然什麼架構師大會也不會各個系統架構百花齊放了。雖然沒有固定的套路,卻有一些經驗,今天就來做一個總結。

基於角色拆分

這種拆分方式常見於基礎設施以及其PaaS層的架構,比如 服務治理 k8s kafka 。所謂基礎元件的PaaS層是說,基礎設施本身主要作為基礎設施使用,是IaaS層。但是基礎設施本身需要維護功能,需要增刪改查等運維操作。業界基於開源做的二次開發也著重在做這方面的工作。

下面以kafka做說明。因為要上升到PaaS層,下圖基於美團對kafka的二次開發封裝,產品名叫 mafka

咱們直接看★標註的部分mafka-manager,這個就是運維操作統一管理端。充當的就是管理者的角色。再看看kafka其他元件的名稱:生產者( producer )、消費者( consumer )、經紀人( broker )。核查員( monitor )。架構的組織都是根據角色來來劃分的。

為什麼我要將mafka-manager用 ★標註 呢。因為不管是基礎設施還是別的,以產品化的觀點,需要對外提供一個完整的產品體驗。完整的產品包含什麼呢?統一的產品外觀、統一的介面定義、統一的服務運營。

我們要接入mafka,雖然最終程式裡要用的是生產者、消費者這些,但是第一步都要在mafka-manager對應的介面上申請。 mafka -manag er 類似於閘道器入口的角色。業界有專門把這些介面服務抽象出來叫做api閘道器。

k8s 架構中,api閘道器這個概念更加明顯一些。

kubectl是k8s的控制檯命令互動介面、web UI是瀏覽器互動介面,不同的互動介面會走統一的api server。這裡api server就是api閘道器服務。

基於可擴充套件性拆分

首先來了解一下AKF擴充套件立方體。

AKF擴充套件立方體(Scalability Cube) ,是《 架構即未來 》一書中提出的可擴充套件模型,這個立方體有三個軸線,每個軸線描述擴充套件性的一個維度:

X軸 —— 代表無差別的克隆服務和資料,工作可以很均勻的分散在不同的服務例項上;

Y軸 —— 關注應用中職責的劃分,比如資料型別,交易執行型別的劃分;

Z軸 —— 關注服務和資料的優先順序劃分,如分地域劃分。

白話來說:X軸拆分就是通過加機器水平拆分;Y軸拆分就是按業務邏輯垂直拆分;Z軸拆分就是按照演算法進行分片,這個演算法比如按地域,不同地域訪問不同的分片或者服務。

舉個例子,比如一般公司的 redis叢集 會有一個團隊來進行統一維護。redis叢集有主有從,資料都是一樣的,多副本容災,這是X軸水平的拆分。一個公司很多業務,redis團隊會對不同的業務提供不同的叢集,這是Y軸垂直拆分;叢集內部資料會通過sharding做分片,這是Z軸演算法拆分。

基於穩定性拆分

在業務架構中,通常會通過核心模組的劃分或者主次鏈路的劃分來進行微服務拆分。

在《 三平面分離架構 》中,我提到過分離出 控制平面資料平面 和管理平面。這本質上也是通過核心模組劃分來進行拆分的一種方式。控制平臺一般是核心鏈路,核心資料作為控制邏輯的一部分可以通過本地快取等措施弱依賴於資料平面。管理平臺是後臺管理等,用於增刪改查,人工操作時才用,其他時間掛掉都沒關係。

基於資源需求拆分

根據效能需求來進行拆分。簡單來說就是訪問量特別大,訪問頻率特別高的業務,又要保證高效的響應能力,這些業務對效能的要求特別高。比如積分競拍、低價秒殺、限量搶購。

我們要識別出某些超高併發量的業務,儘可能把這部分業務獨立拆分出來。這麼做的原因非常簡單,一個保證滿足高效能業務需求,另一個保證業務的獨立性,不互相影響。

類似積分競拍、超低價秒殺、限量搶購,對瞬間峰值和計算效能要求是非常高的。這部分的業務如果跟其他通用業務放在一塊,一個是可能互相影響,比如某個鏈路阻塞,會導致雪崩沿呼叫鏈向上傳遞。

另外一個是如果多個業務耦合在一塊,釋出頻率變高、服務擴縮容變難、維護複雜度變高。如下圖例子所示,訂單服務是一個性能要求高的服務,一般會單獨拆分。

總結

咱們實際工作中,通常會發現一種拆分方式和另一種拆分方式並不衝突。一個完整的架構也不只使用了一種拆分方式。 領域驅動設計(DDD)中簡單易用的10種技巧 也可以配合來使用。

本文提到的api閘道器嚴格上不是業務劃分時的一個模組。業界通常把api閘道器作為一個基礎設施。如果在架構圖中包含了api閘道器通常是下圖所示:

上圖中的架構既包含了業務邏輯的業務劃分,也有配置中心、註冊中心這樣的技術劃分。總體上來說是一個技術架構圖。而api閘道器本身也更多被歸為是技術概念,而不是業務概念。

在《 尤娜系統的第一次飛行中換引擎的架構垂直拆分改造 》中,首先就拆分出來了api閘道器層,這說明尤娜要下一盤大棋,最終對外會提供一個統一的產品。