做爲微服務架構系統,UAVStack的主要服務組件包括:前端
隨着業務量的增加,部署在業務系統及後臺的組件也會相應增長。當總量達到必定量級後,組件升級迭代的成本和效率都會面臨很大挑戰:git
對接發佈系統:github
所以,UAVStack基於自身特色開發了一套升級系統,實現了下列功能:shell
upgrade server升級中心架構
upgrade client升級進程併發
在分配event的同時,upgrade server升級中心會將詳細的event信息一塊兒發送給MA/HM。MA/HM接收到指令event後調用shell,拉起獨立的進程upgrade client,同時附帶詳細的event信息。upgrade client做爲獨立進程完成對指定組件的升級。框架
upgrade server具有擴容能力,可以處理海量組件升級任務。當多個HM對同一個event作分配時,須要作特殊處理,保證event只會被派發一次。當多個做業人提交action時,若對同一個組件提交了屢次不一樣的event事件,也須要作特殊處理,保證一個組件的event事件的單次完整性。運維
爲下降代碼複雜程度,提升功能可靠性,減小對第三方的依賴,同時考慮到action數據已經落地,最終決定經過存儲實現event分配,即對存儲併發下發修改指令,確保只有一條指令能夠成功。而升級進程則經過文件鎖保證了event事件的單次完整性。微服務
(狀態機)測試
1)UAV自升級:具有接收升級指令,自升級,自重啓(HM、MA)
2)第三方升級:不能接收升級指令,升級後不能自重啓(MOF以及其餘軟件目錄)
ALLOCATION:掃描event數據,獲取升級事件(發送修改指令佔坑,標明當前HM負責的event)
基於業務代碼實現事件驅動:每一個處理過程被視爲一個事件。升級成功後,將事件標識爲成功;不然默認爲失敗。升級成功或失敗都須要指定下一個動做,從而實現靈活處理並造成業務閉環。
BACKUP >
PACKAGE_DOWN_LOAD >
OVERRIDE_FILE >
STOP_UAV_PRO(UAV自升級)>
START_UAV_PRO(UAV自升級)>
END_ACTION(釋放文件鎖、現場清理、反饋回調)>
END
OVERRIDE_FILE_CALLBACK(回刷備份文件)> END_ACTION (同理)>END
利用crontab啓動應用進程,關鍵解決按原有啓動參數啓動
同步業務系統的節點信息與當前組件的版本信息時,每每主要依賴人工維護或相關發佈系統。而UAVStack自然的實時畫像數據則解決了運維信息同步不及時這一問題,不只再也不須要人爲干預,還能支持運維信息自動發現。經過畫像數據,能夠實時查看組件部署狀況。
不須要人爲干預便可實現信息自動維護,支持實時過濾與查看、批量操做及任務下發。
這套基於UAVStack自身特點的升級系統下降了運維成本、提高了迭代效率,單人迭代數十個組件迭代只需幾分鐘便可完成,已成功支持測試版本切換與迭代約400次,支持線上版本迭代約350次。
官方網站:https://uavorg.github.io/main/
開源地址:https://github.com/uavorg
做者:劉波安野
首發: UAVStack智能運維