軟件工程能力
分佈式軟件工程能力主要體現在:提高服務的 SLA、能力和資源重用或複用、過程自動化。這三個本質與分佈式的技術點是高度一致的,也就是下面這三個方面的能力。
- 分佈式多層的系統架構
- 服務化的能力供應
- 自動化的運維能力
提高服務的 SLA(服務級別協議)
所謂服務的 SLA,也就是我們能提供多少個 9 的系統可用性。
提高系統的 SLA 主要表現在兩個方面:
- 高可用的系統
- 自動化的運維
能力和資源重用或複用
軟件模塊的重用 和 軟件運行環境和資源的重用 決定了開發運維的能力和資源的可重用性。需要有兩個重要的能力:一個是“軟件抽象的能力”,另一個是“軟件標準化的能力”。軟件抽象就是找出通用的軟件模塊或服務,軟件標準化就是使用統一的軟件通訊協議、統一的開發和運維管理方法等
過程的自動化
軟件生產流水線和軟件運維自動化的使用程度決定了整個過程的自動化程度。
PaaS 平臺的本質
一個好的 PaaS 平臺需要能夠和 IaaS 層實現良好的聯動,並且它應該具有分佈式、服務化、自動化部署、高可用、敏捷以及分層開放的特徵。
PaaS 跟傳統中間件最大的差別:
服務化、分佈式、自動化
服務化
服務化包括但不限於:軟件模塊重用、服務治理、對外提供能力,這些是 PaaS 平臺的本質。
分佈式
分佈式包括但不限於:多租戶隔離、高可用、服務編排,這些是 PaaS 平臺的根本特性。
自動化
自動化包括但不限於:自動化部署安裝運維、自動化伸縮調度,這些是 PaaS 平臺的關鍵點。
PaaS 平臺的總體架構
我們可以藉助 Docker+Kubernetes 來實現一個技術緩衝層,從而能更高效的構建一個健壯的 PaaS 平臺。
調度層(iPaaS)
調度層裏的功能包括但不限於:生命週期管理、服務配置管理、服務監控、服務狀態持久、服務彈性伸縮、服務編排、服務調度、服務命名發現,它的任務主要是確保 PaaS 的自動化和對於分佈式高可用高性能的管控。
能力服務層(aPaaS)
能力層裏的功能包括但不限於:中間件服務、數據服務、業務服務,它的任務主要是確保 PaaS 提供給用戶的服務和能力。
流量調度接入模塊
流量調度層的功能包括但不限於:降級、路由、灰度、流控、熔斷、計算,它的任務主要是確保與流量調度相關的東西,包括對高併發的管理。
運營管理層
運維管理層的功能包括但不限於:軟件、服務、硬件、許可、訂閱、認證、授權、SDK/文檔、API 目錄、多租戶、沙箱、安全、計量計費,他的任務是對軟件資源庫、軟件接入、認證和開放平臺門戶進行管控。
運維管理層
運維管理層的功能包括但不限於:審查、構建、測試、部署、運維,它的任務主要是與 DevOps 相關的東西。
PaaS 平臺的生產和運維
PaaS 的生產運維過程:
- 左上開始軟件構建
- 軟件資產庫(Docker Registry+ 一些軟件的定義)
- 經歷 DevOps 的一套流程
- 藉助整體架構控制器進入到生產環境
- 藉助控制器來操作 Docker + Kubernetes 集羣,以對軟件的部署和生產做變更
- 同步服務的運行狀態
- 通過生命週期管理來擬合狀態
- 數據進入相關的應用監控
- 應用監控中的一些監控事件同步到生命週期管理中
- 由生命週期管理器來做出決定,通過控制器來調度服務運行
- 當應用監控中心發現流量變化,要進行強制性伸縮時,通過生命週期管理來通知控制系統進行伸縮
左下是服務接入的相關組件,主要是網關服務,以及 API 聚合編排和流程處理。
參考資料:
左耳聽風(極客時間)鏈接:
https://time.geekbang.org/column/article/1610
GitHub鏈接:
https://github.com/lichangke/LeetCode
CSDN首頁:
https://me.csdn.net/leacock1991
歡迎大家來一起交流學習