官术网_书友最值得收藏!

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所示。

img

圖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ì)使用到的模塊。

主站蜘蛛池模板: 屏东县| 丹阳市| 洮南市| 兴山县| 钦州市| 罗山县| 沭阳县| 瓦房店市| 尚义县| 靖远县| 哈巴河县| 珠海市| 河东区| 合山市| 耿马| 万全县| 吉安县| 台北县| 界首市| 丁青县| 朔州市| 武夷山市| 甘德县| 龙海市| 康乐县| 马鞍山市| 长寿区| 海晏县| 梁河县| 青河县| 江津市| 连州市| 鹤壁市| 治县。| 吴川市| 通州市| 开鲁县| 普陀区| 静乐县| 军事| 凤翔县|