3.微服務設計原則

AKF拆分原則

akf立方體
AKF擴展立方體是由一個叫AKF公司的技術專家總結出的應用擴展的三個維度。理論上安裝這三個維度擴展,可以把一個單體系統進行無線擴展。

Y軸(功能)

按照功能拆分,基於不同的業務拆分。

X軸(水平擴展)

將微服務運行多個實例,做成集羣加負載均衡的模式。

Z軸(數據分區)

基於類似的數據分區。例如互聯網打車突然火了。用戶量激增,集羣模式撐不住了,那就可以按照用戶請求的地區進行數據分區,建成北京、上海等多個集羣。

前後端分離

在這裏插入圖片描述
前後端分離,不僅要做到技術代碼的分離,還要做到物理分離的部署方式,不要使用之前的服務端模板技術,如JSP。
分離模式下,前後端交互界面更清晰,就剩下接口和模型,後端的接口簡潔明瞭,更容易維護。

前端多渠道應用場景更容易實現,後端無需變更,採用統一的數據和模型,即可支撐PC前端、移動APP等訪問。

無狀態服務

在這裏插入圖片描述
狀態:如果有一個數據被多個服務共享,則這個數據就是狀態。
有狀態服務:依賴於狀態數據的服務。
無狀態服務:不依賴狀態數據的服務。
這裏提到的無狀態服務原則,並不是說在微服務中不允許存在狀態,而是將有狀態的業務服務改爲無狀態的計算服務,把“狀態”數據遷移到對應的“有狀態服務”中。

例如:本地內存中建立的數據緩存、Session緩存,到現在的微服務架構中就應該把這些數據遷移到分佈式緩存中存儲,讓業務服務變成一個無狀態的計算節點。

遷移後,就可以做到按需動態伸縮,微服務應用在運行時動態增刪節點,就不再需要考慮緩存數據如何同步的問題。

RestFul通信風格(無狀態通信原則)

無狀態通信:每次通信都是獨立的,不存在共用的數據(狀態),不相互依賴某一數據。

無狀態通信的最佳實踐就是RESTful通信風格,RESTful具有如下優勢:

天生適合無狀態的HTTP協議,具有很強的擴展能力;

JSON報文序列化,輕量簡單,人機均可讀,學習成本低,對搜索引擎友好;

RESTful具有語言無關性,各大熱門語言都有成熟的API框架。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章