作者:啟超 汪喆 譚霖等
美團Hulk調度系統團隊在集群服務質量與資源利用率運營的長期落地實踐中,基于業務實際場景,自主設計研發了集群負載自動調控系統(LAR)以及配套的運營體系,在提升集群整體資源利用率的同時保障了業務服務質量。
隨著云計算時代的到來,大規模資源運營面臨著如何在保障服務質量的同時提升資源利用率(降本增效)。但這兩個目標的達成在當前的軟硬件技術水平上,是相互矛盾的。本文介紹的LAR(Load Auto-Regulator)系統,即是探索這兩個矛盾方向間的平衡點,在保證質量的前提下,提升資源的利用率。LAR通過資源分級池化,完備的QoS保障機制,做到精細化的單機資源調度與隔離,在提升整體資源利用率的同時,能夠根據服務的優先級和特征保證服務的質量。LAR的整體設計可以適用于多個場景,包括在線場景和混部場景。目前LAR已經在美團在線場景中投入生產使用,并取得了較好的效果。
1 背景
1.1 云計算時代數據中心資源規模爆炸
云計算時代的到來,資源規模化運營成為必然的選擇,大規模數據中心成為當今企業級互聯網應用和云計算系統的關鍵支撐。據權威報告指出,2020年全球數據中心的服務器總量將達到1800萬臺,并且正以每年100萬臺的速度增長。然而,伴隨著數據中心的急速擴容,資源利用率卻始終處于較低狀態。統計數據表明,目前全球數據中心資源利用率僅為10%~20%,如此低的資源利用率意味著數據中心大量的資源浪費,進而導致目前數據中心的成本效率極低。
1.2 資源利用率提升影響巨大
在國家戰略層面,數據中心資源利用率低,造成大量的資源浪費,包括物力資源和電能浪費,這與可持續發展的理念是沖突的。2021年7月,工業和信息化部印發《新型數據中心發展三年行動計劃(2021-2023年)》,提出用3年時間,基本形成布局合理、技術先進、綠色低碳、算力規模與數字經濟增長相適應的新型數據中心發展格局。計劃中重點提出建設綠色高效的數據中心目標,將資源利用率提升作為核心目標。
在公司經營上,提升資源利用率可以提升運營效率降低運營成本。谷歌在2019年發表的論文“Borg-the Next Generation”披露其2011年數據中心核心集群(統計1.2萬臺服務器)的月平均CPU利用率在30%左右,而到2019年,其數據中心核心集群(統計9.6萬臺服務器)的月平均CPU利用率達到了50%左右,8年時間內提升了約20%,資源使用效能的大幅提升,幫助谷歌節省成本累計數十億美元。國內各大云服務提供商和互聯網公司,目前投入大量人力物力去做提升數據中心資源利用率的工作,包括阿里巴巴、騰訊、百度、華為等公司均陸續提出了比較完善的資源利用率提升方案,在內部落地實踐并取得了一定的成績。
提升資源利用率,降本增效,能給數據中心節省大量的成本。以數百萬核CPU的規模的數據中心為例,整體資源利用率每提升1個百分點,節省成本(包括采購成本和運營成本,運營成本主要是機房租金、電費以及運維費用等)每年將達到數千萬元。如果考慮到集群運營人工成本等,隨著資源規模持續擴大,這個收益將持續增長。持續提升機器的資源利用率,降低單核成本,提升集群服務質量,是美團Hulk團隊的核心目標之一。針對用戶對降本增效的需求,Hulk調度團隊在集群資源利用率提升和服務質量保障方向率先做出相關探索,提出了一系列的建設方案,并推進落地。本文重點介紹在Hulk整體資源利用率運營體系中的核心系統集群負載自動均衡管理系統。
2 什么是LAR?
LAR全稱是集群負載自動均衡管理系統(LAR,Load Auto-Regulator),是美團Hulk團隊基于Kubernetes研發的容器編排系統。LAR在Kubernetes之上,通過提供分級的QoS管理機制和負載管控能力,實現從時空維度對資源的精確調度分配管理。
2.1 目標與挑戰
提升資源利用率從大的層面講,符合國家降本增效、節能減排的綠色低碳發展戰略;從小的層面講,通過提升資源利用率,可以為企業每年節省數億的成本,并且降低整體系統復雜度及運維風險。提升資源利用率,竟有這么大的收益?可能超乎絕大多數人的預料。按照很多同學的理解,通過非常簡單的操作即可達成這個目標——提高單機的服務部署密度。但如此簡單的操作,為何全球數據中心資源利用率僅為10%~20%呢?利用率如此之低,這里最為關鍵的因素有三個:
- 部署到同一臺物理機的服務在資源使用上存在相互干擾。
- 服務在流量上存在高低峰,反映在資源使用上也有高低峰。
- 關鍵核心在線服務的服務質量下降無法接受。
整體來說,從當前硬件架構和操作系統設計上看,雖然在資源分配上,理論上是進程作為獨立的分配單位,資源相互隔離,但在實際使用上卻是共享的,典型的包括CPU、網卡、I/O總線、Cache以及內核軟件資源等。當然,軟硬件如此設計本身就是為了提升整體資源利用的效率,提升整體任務的處理能力。而提升資源利用率,從本質上講,是提升資源的復用共享,避免資源閑置浪費。但是提升資源共享復用水平,多少都會影響進程運行的效率,且隨著復用水平越高,影響越大。
操作系統提供了一系列的資源隔離保障措施,意圖降低服務在資源使用時彼此間的干擾,一定程度上在保障資源共享復用的同時提升了資源隔離的能力,但由于底層硬件架構上的限制,這種提升是有限的。而對于大多數業務的在線服務,服務質量的波動,比如延時增加、TPS下降等是難以接受的,特別是類似支付、訂單類的核心服務。這是造成了當前數據中心整體資源利用率低的根本矛盾:一方面是在線業務對資源競爭導致的服務質量下降是難以容忍的,在線服務質量必須保障,另一方面當前大規模的數據中心在整體上資源利用率水平低,運營成本居高不下,亟需提升資源利用率,而提升資源利用率、降低運營成本會直接影響到在線業務服務質量。
一方面,“服務質量”關系著業務的服務體驗,直接關系到營收,而另一方面,“提升資源利用率”,又有著巨大的成本空間可以降低,能夠增加整體的收益。二者對于企業來說,就像“魚與熊掌不可兼得”的矛盾。
圖1 美團在線服務雙峰特征
當前業界,很多企業和研究單位都在投入大量的資源來研究如何解決這一矛盾,努力實現整體利益的最大化。
LAR(Load Auto-Regulator),聚焦于“資源利用率提升”和“服務質量保障”這一矛盾的解決,整個系統設計的根本出發點,即是在集群資源運營上要實現資源利用率和服務質量的雙重保障,解決數據中心運營中的“魚與熊掌不可兼得”難題和挑戰。
2.2 系統架構
提升資源利用率的本質是提升資源共享復用水平,而保障服務質量則需要通過資源隔離能力,保障服務的性能穩定。針對上述兩個根本點,LAR在Kubernetes上提出兩個核心創新點:
- 資源池化分級
通過將單機資源劃分到不同的資源池,提升資源在池內的共享復用水平。
不同的資源池之間有不同的優先級,并提供不同的資源隔離水平(資源隔離水平越高,資源共享復用水平越低)。
資源在不同優先級的資源池之間根據優先級和資源池的資源負載水平流動,優先保障高優資源池服務的資源使用,從而保障其服務質量。
- 動態負載和靜態資源映射
- 資源的分配,本質上是負載空間的分配。假設單機整體CPU利用率小于50%的情況下,運營在其上的服務的服務質量不會有影響,那么這個機器的靜態資源其實對應的就是節點50% CPU利用率的負載空間。換個角度看,就是無論如何調度分配資源,只要這個節點的負載不超過50%即可。
- 業務靜態的資源申請,根據服務的特征經過調度計算后,服務被放入對應的資源池,而資源池的資源配置則根據池內所有服務的實際負載進行資源配置,并可以實時地根據負載調整資源配置,實現靜態資源分配和動態負載的映射管理。
上述兩個核心創新點在幫助提升資源共享復用的同時,通過負載管理和操作系統提供的單機資源隔離能力,實現分級的服務質量保障的機制,具有很強的通用性,應用場景也比較廣泛。結合上述的核心創新點,LAR的整體設計目標包括:
- 相較于Kubernetes,提供分級可編輯更細致靈活的QoS服務質量保障機制,充分保障核心服務的資源供給及服務質量。
- 建立負載與資源之間的映射關系,解決Kubernetes基于Request的靜態資源調度難以解決的節點負載問題,降低負載動態調度的整體復雜度。
- 提供靈活且具有一定通用性的單機資源調度能力,實現不同服務間資源的錯峰復用。
- 提供更強力的資源隔離能力,保障核心在線業務的服務質量前提下,提升整體的資源利用率。
圖2 Hulk資源利用率運營體系
在Hulk整體資源利用率運營體系中,LAR基于Kubernetes擴展,負責單個集群的資源管理和調度。相較于Native的Kubernetes,LAR提供分級可編輯更細致靈活的QoS服務質量保障機制,充分保障不同服務的資源供給及服務質量。
而LAR依托于底層的MTOS提供的資源隔離能力和調度資源Buffer池的物理機彈性伸縮能力,并根據集群運營數據中心和服務畫像提供的集群及服務等特征,向上提供精細化的動態資源調整、負載管理以及QoS服務質量保障能力。統一調度系統在LAR之上,根據LAR提供的動態資源及服務質量數據,完成不同應用場景下,包括在線服務和離線服務的跨集群統一調度。
LAR處于整個資源利用率運營體系中核心關鍵位置,從功能上來看,整個產品分為五大主要功能模塊:
- 資源分級管理模塊
- 資源池配置管理模塊
- 服務質量保障模塊
- 資源隔離管理模塊
- 策略配置模塊
上述五大功能模塊由LAR系統中3個核心組件來落地實現。LAR是基于原生的Kubernetes進行研發擴展,如下圖3的整體架構所示,LAR在Kubernetes的基礎功能上,擴展了Scheduler和Kubelet的功能,并新增Recommender和QoSAdaptor兩個組件。對Kubernetes原生組件的擴展均采用插件開發的模式,減少對原生組件的入侵式修改,從而降低未來運維和升級的成本;對于新增組件,遵循云原生的開發模式,包括代碼風格以及運行機制,和Kubernetes保持統一。
圖3 LAR系統架構
QoSAdaptor
QoSAdaptor主要負責服務質量保障,其核心功能是負責單機資源的分池分級管理,提供分級的單機QoS服務質量保障機制。QoSAdaptor分為五個功能模塊:
- 指標采集模塊:通過Cadvisor、Node-Exporter等工具采集節點與容器的指標,為資源池管理提供決策依據。
- 資源池管理模塊
資源動態配置管理:根據數據指標對資源池實時進行負載計算,并基于負載策略及優先級動態調整資源在各級資源池的配置。
QoS服務質量保障:實時監控負載指標,依據資源池的優先級管理策略,在資源競爭的情況下,通過資源搶占、服務降級及驅逐等多種手段分優先級保障服務質量。
- 資源配置管理模塊:基于各資源池的配置,通過Cgroup等系統工具,對不同資源池的資源進行隔離與限制。
- 資源上報模塊:周期Patch節點的資源使用情況、資源池負載等信息。
圖4 QoSAdaptor與KubeletQoSAdaptor
以DaemonSet的形式部署在Kubelet節點上,核心功能是實現資源池和容器的資源配置管理。如上圖4所示,我們通過自研的CRI Plugin,以Runtime Hook的形式在容器生命周期管理中引入自定義的QoS保障機制。
由于QoSAdaptor的資源調整與QoS服務質量保障動作,均基于本地指標采集并進行實時的負載和策略計算,不依賴外部監控系統,減少了數據傳輸時延,在保證服務的穩定性同時確保可以秒級響應資源配置調整和服務質量保障動作,保障業務容器的穩定性。
Recommender
Recommender主要負責LAR運行中策略及參數的配置更新,依托外部服務數據,周期性計算并更新LAR相關策略參數,提供統一的集群策略配置入口。
圖5 Recommender與其它服務組件調用關系
Recommender以集群為維度,每個集群部署一套服務。如上圖5所示,Recommender通過集群運營數據中心和服務畫像服務的離線數據,周期迭代計算LAR的策略參數。主要功能模塊包括:
- 資源預測:根據離線監控數據及服務畫像數據,對節點物理資源未來的使用情況進行提前預估,指導節點的不同資源池的資源配置,并可能觸發QoS服務質量保障動作以及集群級別的資源調整,比如節點擴容及服務重調度等。
- 策略計算:根據節點的各級資源池負載數據及集群運營數據中心的集群服務質量數據,周期性迭代更新各級資源池的負載控制及資源配置策略,保障服務質量的同時不斷提升資源利用效率。此外,策略計算會定期更新QoS服務質量保障機制中的相關策略,比如服務降級、驅逐等判斷條件。
- 參數配置:提供統一的QoSAdaptor參數配置,實現配置變更分發的功能。
Scheduler
在LAR中,通過靜態資源和動態負載之間的映射,進而在調度層屏蔽了動態負載變化,在調度層面降低了根據負載進行動態調度的復雜度。
Kubernetes默認根據業務申請的資源規格進行資源的調度分配,并以此設計調度計算框架和算法。但由于業務申請的資源規格是個靜態值,且業務方對服務資源的使用通常傾向于放大評估,進而導致整體的資源申請和實際資源使用時存在較大的Gap。我們進一步考慮到資源的使用通常是動態的,也具有規律性的波峰波谷。這兩點因素導致在集群的運營上,整體資源分配率接近滿分配的情況下,資源使用率平均水平其實很低。
傳統的方案通過節點資源超售來解決資源申請和實際資源使用之間存在的Gap,并引入根據負載的動態調度策略。調整節點資源超售,雖然能在一定程度上緩解資源申請和使用的Gap問題,但由于Gap在不同的服務間并不相同,加上服務資源使用的波峰波谷分布集中的情況(美團在線業務的典型特征),此方法在整體上過于粗放,會導致節點間的負載分布不均衡,部分節點負載很高,影響服務質量;另一部分節點負載極低,實際上形成資源浪費。而根據負載直接進行資源調度,由于負載是動態變化的,在調度算法設計及計算框架實現上會非常復雜,且效果一般。
在LAR中,我們通過引入資源配置因子(RCF,Resource Configuration Factor,資源池內的資源配比,動態控制池內容器的實際可用資源,數值區間為(0, 1]),根據負載調整實際的資源分配,從而將負載的變化映射為可調度剩余資源的變化。如下圖6所示,資源負載即為實際的使用資源,是動態變化的,靜態資源是指資源總量和業務申請的資源規格,RCF由服務所在的節點的資源池決定,根據服務的歷史資源使用數據和服務畫像進行計算,并周期進行迭代更新。
圖6 RCF實現節點負載和可調度資源轉換
2.3 關鍵能力實現
圍繞資源利用率提升和服務質量保障,LAR系統實現了以下關鍵技術:
- 分級池化資源模型:實現資源分池動態管理以及資源池優先級管理。
- 資源動態視圖:實現負載和資源配置之間的動態映射,簡化負載管理,保證負載的均衡度,保障服務質量。
- QoS保障機制:根據負載管理的資源配置,在資源競爭的場景下,提供資源搶占以及服務降級驅逐等功能,提供分級服務質量的保障能力。
- 資源智能運營:通過池間資源配置、池內負載配置、歷史負載預測等運營策略,自動化調控節點資源分配情況,從而達到提升資源利用率的目的。
2.3.1 分級池化資源模型
分級池化資源模型是LAR整個設計的核心,整個模型包括資源分池動態管理和資源池優先級管理兩個核心設計。
資源分池動態管理機制
資源分池動態管理引入資源池的概念,通過將節點資源進行分池管理,實現資源池內部資源高度共享,在提高資源復用率的同時,通過池間資源隔離達到池間服務的干擾隔離。資源池內資源的配置依據服務的負載進行動態調整,并通過資源配置的調整,控制資源池內部的資源負載維系在相對穩定的范圍內,從而保證服務質量。
資源池優先級管理機制
在資源分池動態管理機制基礎上,LAR引入資源池優先級管理機制,通過分級的服務質量保障機制,保障業務的服務質量。在資源池優先級管理機制中,不同的資源池具有不同的優先級,對應不同級別的服務質量保障級別。不同優先級的資源池,在資源配置管理上有3點區別:
- 資源配置管理策略不同:資源配置管理策略用于決策資源池的資源配置,并通過資源配置控制資源池的資源供給和負載水平。對于優先級高的資源池,資源配置充裕,資源池內的負載維系在安全穩定的水平,并通過資源池的資源隔離能力,實現對資源池內部服務資源使用的優先保障,從而保證更高的服務質量。
- 資源隔離保障能力不同:高級別的資源池依托系統內核等提供的資源隔離能力,提供更高級別的資源池資源隔離級別,通過實現資源的獨占或優先搶占使用,達到高優資源池內部服務在系統進程級別資源調度時的優先保障。比如,對于高優資源池,可以進行獨立的CPU互斥綁定、I/O隔離等,保障其內部服務不受池外服務的影響。
- 優先級資源搶占機制:資源池的資源配置可以動態調整,在高級別資源池配置資源不足,池內負載過高時,QoS服務質量保障機制會根據資源池優先級,高優資源池可以搶占低優資源池已配置的資源,通過犧牲低優資源池服務質量水平,優先保障高級別資源池的資源供給,保障高優服務的服務質量。
在LAR的分級池化的資源模型中,節點空閑資源,放置到優先級最低的資源池內,其它資源池的資源配置由服務的資源申請規格、資源池資源配置管理策略以及資源池資源負載決定。在資源池資源配置管理策略中,包含資源池目標負載和資源池RCF兩部分內容。資源池具體的配置資源由服務申請的資源和資源池實時負載決定。當實時負載升高時,LAR會調整對應資源池的RCF,增加資源池的資源配置,降低資源池負載;當資源池負載降低時,LAR會通過調整RCF降低資源池的資源配置,釋放冗余資源。
圖7 LAR單機資源分配及資源池資源調整
上圖7以3級資源池為例,節點資源被劃分為0、1、2三類資源池,優先級依次降低。初始整個機器無服務調度其上,資源全部集中在Pool2。隨著服務的調度,Pool1先調度了服務1,這時會根據上述的資源計算方式,LAR將Pool2的對應的資源調整至Poo1,Pool2資源減少。隨著Pool1中服務增多,配置的資源隨之增多,Pool2相應資源減少。優先級最高的Pool0調入服務后,同樣的資源從Pool2調整至Pool0;Pool2調度入服務時,Pool2資源不變。
3個資源池配置不同的資源配置管理策略,0號池優先級最高,池內目標CPU負載控制在30%~50%之間;1號池優先級次之,池內目標CPU負載控制在45%~60%之間;2號池優先級最低,池內目標CPU負載控制在50%~80%。已分配的資源由資源池內服務共享,在池間相互隔離。在負載低時,不同資源池根據資源池管理策略,自動調整各資源池的資源配置,保證資源池內負載穩定;出現資源緊張時,高優資源池可以從低優資源池搶占資源,優先保障高優服務的資源需求。
2.3.2 動態資源視圖
LAR通過引入動態資源視圖,將靜態資源與動態負載進行映射,并基于資源池的實際負載進行更精確的資源分配決策。
當在線資源池出現負載波動時,池內分配資源會隨著負載進行變化,引起池間的資源流動。池間資源流動遵循以下規則:
- 所有資源池的池內分配資源之和為節點可分配的資源總量。
- 當池內負載降低,釋放資源到最低等級的資源池,復用閑時資源。
- 當池內負載升高,向等級低于自身的資源池,根據從低到高的順序進行資源請求,根據優先級滿足服務資源需求。
- 池內的資源最多不會超過用戶申請的量。
圖8 動態資源視圖(以三級池為例)
如圖8所示,以3級資源池為例:
- 當Pool1負載升高時,從等級更低的Pool2搶占資源,優先保障自身的服務資源需求,Pool1負載降低時,將冗余的資源釋放回Pool2。
- 當Pool0負載升高時,優先從Pool2搶占資源,當Pool2資源不足時,從Pool1搶占資源,保證更高等級的服務資源需求,當Pool0負載降低時,冗余的資源被釋放回Pool2,此時若Pool1存在負載壓力,則會重新從Pool2搶占資源。
下圖為資源池內負載與池內分配資源的變化情況,可以看到其變化趨勢與美團在線服務負載特性基本保持一致。
圖9 節點池內負載與池內分配資源變化情況
2.3.3 QoS服務質量保障機制
提升資源利用率會導致資源競爭,LAR通過池間、池內兩層QoS服務質量保障機制,分級保證服務的隔離性和穩定性。
池間多維度資源隔離
LAR對資源池進行了多維度的資源隔離與限制。除了基礎資源(CPU、Memory),還對磁盤I/O、CPU調度、Memory Cache、內存帶寬、L3 Cache、OOM Score、網絡帶寬等更細粒度的資源進行了隔離,進一步提升不同等級服務間的隔離性,保證服務不會受到其他資源池的影響。
圖10 多維度資源隔離
美團操作系統團隊針對LAR場景進行了隔離增強,關于MTOS相關特性的詳細介紹,大家可持續關注美團技術團隊公眾號的相關內容。
池內多層級保障策略
當資源池內負載出現不符合預期的情況時(如容器負載異常),由于資源池內資源共享,整個資源池的服務都可能受到影響。LAR基于資源池內不同的負載等級,制定了多級保障策略。LAR提供了資源釋放、資源搶占、CPU降級、Cache釋放、容器驅逐等負載處理策略。QoSAdaptor周期性(秒級)地獲取節點負載的數據,并計算資源池的負載等級。當負載達到一定的資源等級時,執行對應的負載策略。通過CPU降級、驅逐等行為,根據優先級對部分容器進行資源降級,保障池內絕大多數容器的穩定性。
- 容器驅逐:Kubernetes原生的驅逐策略基于整個節點的負載,LAR中將策略縮小到了資源池維度,當池內Memory使用接近Cgroup限制,避免整個資源池出現OOM,影響所有容器的正常運行,會結合優先級篩選Memory使用較多的容器進行驅逐操作。
- CPU降級:池內CPU負載超過一定負載等級,避免高負載導致的容器間互相影響,LAR會結合優先級篩選CPU使用較多的容器,對其CPU使用進行單獨的限制。降級操作存在定時檢查機制,當負載恢復正常,或有資源可以搶占的情況下,會將CPU限制進行恢復。
- 強制搶占:從更低等級的資源池搶占資源,與普通資源搶占的區別為,即使資源已經被其他池使用,強制搶占會優先滿足高等級資源池的需求。
2.3.4 資源智能運營
LAR基于資源池的歷史負載與歷史分配情況,對池內高峰資源使用情況進行預測,為節點資源調整提供指導。由于資源池負載變化比較頻繁,同時受到池內服務變更、資源總量、高低峰時間區間等因素的影響,節點基于實時負載進行池內資源的變更較不穩定。Recommender周期性地根據各節點資源池的歷史負載與分配情況進行高峰資源預測,并下發到節點,提供高峰負載控制指導,提升資源池資源保障的穩定性。同時通過RCF完成動態負載和靜態資源的轉換,在調度層屏蔽了動態負載變化,減少負載頻繁變化對調度準確性的影響。
圖11 基于歷史負載的資源預測
3 應用場景
LAR的設計目標是在保障服務質量的同時提升整體資源的利用率,在資源分池分級的設計上,針對通用的在線服務進行服務分級,對接不同資源池,提供不同的服務質量保障,從而提升資源的利用率。而對于離線服務,本身相對于在線服務的服務質量要求低,故而LAR天然地適用于混部場景。
3.1 在線場景
對于在線服務,通過對服務進行分級,并通過服務畫像對服務進行細致刻畫,將資源敏感型服務和關鍵核心服務部署到LAR優先級最高的資源池中;而對于一般的在線服務,部署在次優先級資源池。高優資源池提供更細粒度與嚴格的資源隔離手段(包括綁核、進程級優先調度、I/O隔離、網絡隔離、Cache隔離等),以及在資源競爭時高優的資源供給保障,保證池內服務的質量穩定。
圖12 LAR在線場景資源池
如上圖12所示,一方面我們對高優資源池配置更強的資源隔離策略(比如CPU綁核、進程優先調度等),另一方面在池內資源配置上,高優資源池的資源配置更高。轉換成資源池的資源利用率,高優池資源利用率控制在一個安全較低的水位;而低優池,則相對在一個更高的水平。
而由于高優池主要針對關鍵核心且對資源敏感的在線服務,其在整個在線服務中相對比例不超過20%。從而能整體提升整機的資源利用率水平。LAR在線服務場景中的應用,目前在Hulk的線上線下均已落地,如圖13所示線上LAR集群(藍色曲線表示)的整體平均CPU利用率相對于Native的Kubernetes集群(橙色和綠色曲線表示)平均高5到10個百分點,但整體平均服務質量(圖14)和Native的Kubernetes集群反而更穩定。其中LAR集群目前作為在線集群使用,暫無離線服務接入。
圖13 在線集群資源利用率
圖14 集群服務質量
3.2 混部場景
混部主要就是通過將延時和穩定性容錯性更高的離線服務和在線服務混合部署,實現在線服務和離線服務在資源使用時空上的削峰填谷,如下圖15所示:
圖15 混部場景資源復用
從上述章節介紹的LAR資源模型可知,LAR資源模型的核心特征包括:
- 資源分池分級管理,池內資源共享,池間資源隔離。
- 資源池資源配置由資源池優先級和資源池內負載決定。
- QoS服務質量保障機制根據負載調整資源池的資源配置,優先保障高優資源池資源供給。
有了上述能力的保障,LAR天然地適應于混部場景。在混部場景中,假設將資源池分為0、1、2三個級別,優先級依次由高到低。0和1號池分別對應核心關鍵在線服務和一般的在線服務,而2號池對應離線服務使用的資源池。LAR的資源動態調整保障負載能力,會自動將0號池與1號池在業務低峰期(負載低)的閑置資源回收,提供給2號池的離線服務使用。并且QoS服務質量保障機制,可以確保在業務高峰來臨時,秒級搶占2號池資源(對于內存等非復用型資源,通過驅逐方式強制回收),從而保障在線服務的資源使用。
目前,LAR集群已陸續接入離線服務進行混部的驗證。
4 演進規劃
圖16 LAR演進規劃LAR系統
從2021年開始規劃并啟動建設,1.0版本我們完成了資源分級系統、負載驅動的動態資源視圖建設。2.0版本,我們主要完成了服務質量保障體系建設。目前,我們正在與美團內部多個業務方深度進行合作,探索服務分級接入及混部場景的應用。未來,LAR會繼續在自動化智能化運營和混部場景應用進行探索迭代。
5 作者簡介
啟超、汪喆、譚霖等,均來自美團基礎技術部/基礎軟件中心Hulk調度系統。