AKF拆分原則
AKF擴展立方體是由一個叫AKF公司的技術專家總結出的應用擴展的三個維度。理論上安裝這三個維度擴展,可以把一個單體系統進行無線擴展。
Y軸(功能)
按照功能拆分,基於不同的業務拆分。
X軸(水平擴展)
將微服務運行多個實例,做成集羣加負載均衡的模式。
Z軸(數據分區)
基於類似的數據分區。例如互聯網打車突然火了。用戶量激增,集羣模式撐不住了,那就可以按照用戶請求的地區進行數據分區,建成北京、上海等多個集羣。
前後端分離
前後端分離,不僅要做到技術代碼的分離,還要做到物理分離的部署方式,不要使用之前的服務端模板技術,如JSP。
分離模式下,前後端交互界面更清晰,就剩下接口和模型,後端的接口簡潔明瞭,更容易維護。
前端多渠道應用場景更容易實現,後端無需變更,採用統一的數據和模型,即可支撐PC前端、移動APP等訪問。
無狀態服務
狀態:如果有一個數據被多個服務共享,則這個數據就是狀態。
有狀態服務:依賴於狀態數據的服務。
無狀態服務:不依賴狀態數據的服務。
這裏提到的無狀態服務原則,並不是說在微服務中不允許存在狀態,而是將有狀態的業務服務改爲無狀態的計算服務,把“狀態”數據遷移到對應的“有狀態服務”中。
例如:本地內存中建立的數據緩存、Session緩存,到現在的微服務架構中就應該把這些數據遷移到分佈式緩存中存儲,讓業務服務變成一個無狀態的計算節點。
遷移後,就可以做到按需動態伸縮,微服務應用在運行時動態增刪節點,就不再需要考慮緩存數據如何同步的問題。
RestFul通信風格(無狀態通信原則)
無狀態通信:每次通信都是獨立的,不存在共用的數據(狀態),不相互依賴某一數據。
無狀態通信的最佳實踐就是RESTful通信風格,RESTful具有如下優勢:
天生適合無狀態的HTTP協議,具有很強的擴展能力;
JSON報文序列化,輕量簡單,人機均可讀,學習成本低,對搜索引擎友好;
RESTful具有語言無關性,各大熱門語言都有成熟的API框架。