1. 程式人生 > 其它 >加快雲原生技術轉型, 智慧排程登陸華為雲DevOps: 增速,節源

加快雲原生技術轉型, 智慧排程登陸華為雲DevOps: 增速,節源

摘要:本文將探討智慧資源排程在華為雲DevOps上的應用與實踐。

本文分享自華為雲社群《加快雲原生技術轉型, 智慧排程登陸華為雲DevOps: 增速,節源》,作者: DevAI。

1. 背景

隨著雲端計算、微服務、容器等技術的蓬勃發展,以及雲原生的敏捷,適應性強,易監視,雲原生技術的落地成為了各團隊重點關注和亟待解決的問題。DevOps作為一站式平臺,將雲原生開發模式融合到產品中,為廣大開發者提供好用易用的雲原生研發管理解決方案。開箱即用的敏捷專案管理、程式碼管理、自動化測試管理,CICD流水線等功能,讓開發、測試、部署全流程與雲原生底座平臺無縫結合,進一步降低開發者上手雲原生技術的門檻,加快雲原生技術轉型,大幅提升軟體生產效率。DevOps各環節如下圖所示:

2. 雲化DevOps面臨的痛點問題:

1)高峰任務突增,威脅系統可靠性

整點定時任務突增,排隊數量過萬,容易導致任務超時失敗,同時威脅程式碼倉、構建系統、包倉庫及測試系統可靠性。

2)資源平均空閒時間長,利用率整體偏低

① 資源池平均利用率低,抽樣統計CPU利用率低, RAM利用率低。

② 虛擬機器數目以峰值任務做靜態配備,未按需做動態調整,容易導致大量機器在非峰值時段空閒。

③ 任務排程未充分利用虛擬機器CPU、RAM等實時資訊與任務實時資訊,導致機器利用率低。

3. 雲化DevOps資源排程各環節場景分析及解決方案

場景一:程式碼託管服務資源排程

問題描述:分散式版本控制程式碼倉服務將大大提高開發者協同開發,支撐專案程式碼託管,支撐大規模併發作業,千人團隊協作,億級程式碼下載,支撐大規模團隊寫協同作業,高併發MR程式碼提交,其中高併發,負載不均等問題將會對系統穩定性造成致命的影響。

解決方案:副本均衡,分佈策略,提高下載速率

程式碼倉彈性排程,根據使用者流量建立模型進行提前動態副本注入,綜合考慮IO,CPU負載,併發,磁碟大小等多因素,探究目標因子與優化目標的關聯性(倉庫大小、併發下載對機器效能的影響)及有限空間裝箱問題(磁碟空間有限),改善負載均衡、安全性、效能和管理,以提供快速、不間斷的應用訪問。如下圖所示:

與此同時,為提升系統穩定性,減少系統GC對使用者行為造成的衝突影響,我們開發了基於智慧GC時間段推薦系統,如下圖所示,在合理時間段進行GC,減少系統GC對使用者操作造成的衝突,提升系統穩定性,有效減少衝突率。

場景二:程式碼檢查,編譯構建服務資源排程

問題描述:

虛擬機器數目以峰值任務做靜態配備,容易導致大量機器在非峰值時段空閒,任務排程未充分利用虛擬機器CPU、RAM等實時資訊與任務實時資訊,導致機器利用率低, 虛擬機器數目配置較低又容易造成任務排隊數過多,嚴重影響使用者體驗。為此我們提出了共享資源池的彈性伸縮排程服務。

解決方案一: 虛擬機器環境下資源池共享的彈性排程

通過彈性伸縮調控資源水位和任務智慧排程實時最優化調整資源消費,閒時將資源釋放到共享資源池,忙時從資源池中進行資源擴充,提升構建/程式碼檢查資源使用效率。如圖所示:

其中採取的彈性伸縮模式:

定時模式:配置定時任務,根據產品線不同配置不同的定時任務進行彈性擴張和縮容

動態模式:根據實時任務數及監控資料,進行自動的資源增加或減少

混合模式:定時及動態模式相容,按需按時分配。

解決方案二:基於容器的智慧化預測彈性資源排程

虛擬機器的啟動時間可能是分鐘級的,而Docker容器建立是秒級別同時容器化的環境隔離,資源控制,檔案系統,使得更加靈活及輕量級,與此同時雲上資源使用預測演算法面臨如下挑戰:波形的多樣性(平穩型、突發型、隨機型、條形碼型等),任務規格多樣性,業務週期不斷變化,週期性不明確。如下圖所示:

通過挖掘連續時間維度上的變化特徵,如任務特徵,阻塞情況,CPU使用情況,MEM使用情況等,採用預測模型預測下一階段需要的資源數,同時增加模型峰值檢測能力,應峰能力,提前進行資源分配,減少阻塞同時,降低資源浪費情況,如圖所示:

場景三:部署環節版本包資源排程

問題描述:產品軟體包放置地域與多數開發者地域不一致會導致大量廣域網傳輸,佔用出口頻寬,造成網路擁塞和倉庫效能問題。

解決方案一:資源排程中的流量分析

通過分析業務日誌,考慮倉庫負載、開發者地域等多種因素來建模,推薦軟體包最佳地域,節約頻寬資源,同時平衡倉庫負載。如下圖所示,監測某版本包流量主要來源於上海,經過對倉庫各因素模型分析,推薦部署地為廊坊,可提升速度XX%。

解決方案二:資源排程中的經典裝箱演算法

從雲服務提供商來說,降低1%資源碎片 = 成百上千萬美元的成本下降, 因此如何提升分配率將大大降低成本,提升競爭力,從提升分配率上看,資源排程中可以應用經典的裝箱演算法,與傳統的裝箱演算法相比我們提供了多種約束條件共存的裝箱優化演算法,解決了單一難以滿足可持續資源效能優化要求,有效提升資源利用率。

4. 小結

本文對智慧資源排程服務在DevOps各環節中的應用問題進行了分析並給出了相應的解決方案,致力於使用智慧演算法,實現“合理排程資源,最優供給”目標,在提高資源利用率,降低成本,提升軟體生產效率,降低風險等方面起到顯著作用。

作者:華為雲PaaS技術創新Lab

 

點選關注,第一時間瞭解華為雲新鮮技術~