- 微服務(wù)容器化開發(fā)實(shí)戰(zhàn)
- 尹為強(qiáng)
- 902字
- 2020-10-30 15:17:06
1.4 微服務(wù)拆分
微服務(wù)架構(gòu)的顯著特點(diǎn)就是微小、程序功能單一、顆粒度小。所以,宏大的單體架構(gòu)向微服務(wù)架構(gòu)演進(jìn)過程中,關(guān)鍵的步驟就是進(jìn)行微服務(wù)拆分,將顆粒度較大的單體程序拆分成多個(gè)顆粒度較小的微服務(wù)程序。
下面介紹微服務(wù)設(shè)計(jì)原則和拆分原則。
1.4.1 微服務(wù)設(shè)計(jì)原則
1.AKF拆分原則
AKF擴(kuò)展立方體(可以參考The Art of Scalability),是AKF公司的技術(shù)專家抽象總結(jié)的應(yīng)用擴(kuò)展的三個(gè)維度。按照這個(gè)擴(kuò)展模式,從理論上來說可以將一個(gè)單體系統(tǒng)進(jìn)行無限擴(kuò)展。基于AKF擴(kuò)展立方體的拆分如圖1-4所示。

圖1-4 基于AKF擴(kuò)展立方體的拆分
X 軸:指的是水平復(fù)制、水平擴(kuò)容。例如,單體架構(gòu)系統(tǒng)多運(yùn)行幾個(gè)程序?qū)嵗龀杉杭迂?fù)載均衡的模式。
Z 軸:基于類似的數(shù)據(jù)分區(qū)。例如,一個(gè)互聯(lián)網(wǎng)打車應(yīng)用突然變得火熱,用戶量激增。集群模式不再適用,可按照用戶請(qǐng)求的地區(qū)進(jìn)行數(shù)據(jù)分區(qū),在北京、上海、廣州等多建幾個(gè)集群。
Y 軸:就是微服務(wù)的拆分模式,基于不同的業(yè)務(wù)拆分。例如,按照不同業(yè)務(wù)類型、不同處理步驟、系統(tǒng)前后銜接關(guān)系、部署區(qū)域等進(jìn)行拆分。
2.前后端完全分離原則
前后端在邏輯和物理上的分離,前端和后端均獨(dú)立部署,各自專注自身業(yè)務(wù)。另外,前后端完全分離后,將靜態(tài)資源推送到CDN上將更加容易,可以方便使用CDN的靜態(tài)資源加速能力。
3.無狀態(tài)服務(wù)原則
微服務(wù)盡量無狀態(tài)化,優(yōu)點(diǎn)是應(yīng)用可以任意橫向擴(kuò)容、擴(kuò)展。
4.RESTful通信風(fēng)格
無狀態(tài)的RESTful通信風(fēng)格的HTTP協(xié)議具備先天優(yōu)勢(shì),擴(kuò)展能力很強(qiáng)。JSON 報(bào)文序列化,輕量簡(jiǎn)單,具備語言無關(guān)性,主流語言都提供成熟的RESTful API框架,相對(duì)于一些RPC框架生態(tài)更完善。
1.4.2 微服務(wù)拆分原則
1.粒度適中原則
拆分不應(yīng)該過分追求細(xì)粒度,要考慮適中性,不能過大或過小。拆分后的代碼應(yīng)該是易讀、易維護(hù)的,業(yè)務(wù)職責(zé)也是明確且單一的。
2.先大后小原則
在拆分大粒度模塊時(shí),一個(gè)模塊拆分為一個(gè)微服務(wù)。后續(xù)迭代優(yōu)化時(shí),可以根據(jù)需要將較大的服務(wù)進(jìn)一步拆分為多個(gè)微服務(wù)。
3.公共服務(wù)抽取原則
公共服務(wù)一般分為數(shù)據(jù)庫服務(wù)、緩存服務(wù)、消息服務(wù)、日志服務(wù)、查詢服務(wù)等,這些服務(wù)封裝為公共服務(wù),然后向其他微服務(wù)提供API接口。
4.實(shí)體類封裝原則
數(shù)據(jù)庫表對(duì)應(yīng)的實(shí)體類、過程數(shù)據(jù)類、關(guān)聯(lián)查詢結(jié)果類,以及第三方訪問返回結(jié)果類等是所有微服務(wù)都會(huì)使用到的模塊。
- Istio入門與實(shí)戰(zhàn)
- 圖解西門子S7-200系列PLC入門
- Augmented Reality with Kinect
- Effective STL中文版:50條有效使用STL的經(jīng)驗(yàn)(雙色)
- Deep Learning with PyTorch
- 嵌入式系統(tǒng)設(shè)計(jì)教程
- 數(shù)字邏輯(第3版)
- 計(jì)算機(jī)維修與維護(hù)技術(shù)速成
- STM32嵌入式技術(shù)應(yīng)用開發(fā)全案例實(shí)踐
- OpenGL Game Development By Example
- Hands-On Deep Learning for Images with TensorFlow
- 單片微機(jī)原理及應(yīng)用
- 筆記本電腦維修技能實(shí)訓(xùn)
- The Deep Learning with PyTorch Workshop
- ActionScript Graphing Cookbook