作者|阿裡資源管理技術專家楊儀
剛剛過去的 2018 年天貓“雙11”,創下了全天 2135 億 GMV 的數字奇迹,零點交易峰值比往年提升 50%,各項名額均創下曆史新高。
2018 年是“雙11”的第十年,也是阿裡系統軟體事業部參與的第二個“雙11”,系統軟體是介于業務應用和 IDC、網絡、伺服器之間的核心關鍵層,為阿裡巴巴集團線上業務提供基礎的作業系統、資源排程、SRE、JVM 等領域重要的基礎設施。
經過兩年“雙11”的精心淬煉,系統軟體事業部與其他兄弟 BU 并肩作戰,逐漸提升了阿裡巴巴在基礎軟體領域的技術深度。阿裡系統軟體是如何應對“雙11”流量峰值的呢?以下為大家一一揭曉。
“雙11”面臨的挑戰
雙11的核心是穩定壓倒一切,如何確定各個系統在峰值流量下的穩定性成為重中之重,系統軟體作為阿裡巴巴的基礎設施底盤,今年主要面臨如下挑戰:
- 在去年雙11的完美表現的基礎上,今年雙11的穩定性不容有失,從核心到業務層保障,所有基礎設施必須保障絕對穩定;
- 大量新技術如規模化混部演進給集團帶來技術進步的同時,給系統和業務帶來不确定的技術風險;
- 如何在保障業務穩定性的同時,確定成本最低,是業務給系統軟體提出的更高要求;
系統軟體雙11備戰回顧
雙11備戰之資源傳遞
面向終态的站點傳遞
衆所周知,阿裡巴巴的交易系統采用了異地多活的災容架構,當大促來臨前,需要在多個地域快速傳遞多個站點,通過全鍊路壓測平台進行站點能力驗證。借助于阿裡巴巴資源快速彈性的能力,從傳遞使用到站點壓測,需要在短短10多天時間内完成多個站點的快速傳遞,無疑是一個巨大的挑戰。
為了提升整體建站的效率,確定站點高品質傳遞,系統軟體建站團隊對建站鍊路進行了全面的方案優化和更新如下:
-
全生命周期業務叢集管控
包括 0->1(建站)、1->N/N->1(彈性伸縮/快上快下)、1->0(站點下線);彈性伸縮範圍包括接入層、中間件、Tair 及應用全鍊路。
-
無縫對接容量模型
單元化應用分組自動識别,應用彈性結合預算産出容量模型,對接中間件等容量模型,交易筆數->建站範圍及資源需求。
-
規模化資源編排
基于 Sigma 的規模化場景資源編排,最小化資源碎片,節省資源,通過實際驗證,資源配置設定率達到 98%。
-
自動化業務回歸
各 BU 自動化業務回歸,例如基于天啟/doom、全鍊路壓測、軍刀等。
資源營運降低大促成本
根據準确測算,2018年大促每萬筆交易成本比去年下降20%;這裡面除了混部技術的大規模運用、雲化等因素外,還需要在資源營運層面進行一系列優化,其中的重點就是打造一套資源全生命周期管理的資源營運平台,實作資源快速傳遞和資源最大化利用。
-
資源傳遞體系建設
在資源傳遞鍊路上,資源營運團隊對額度系統進行重構更新,将面向時間的額度系統更新為面向目前賬戶的額度體系,應用負責人可以自由地在應用之間進行額度轉移,極大地提升了資源傳遞效率;此外,我們基于一系列的容量規劃和算法預測,實作了大量業務的分時複用,将大量不參與大促的業務的資源提前釋放,用于支撐大促需求。
基于系統化的資源營運方式,集團資源營運的效率和使用率大幅提升,有效地防止了資源洩露和資源閑置,真正實作了大促成本不增加,為阿裡集團節省了億級别采購成本。
雙11備戰之排程備戰
大規模混部技術應用
2017年雙11,阿裡巴巴的混部技術在大促零點成功得到驗證,今年雙11混部的量級擴大到去年的3倍;在這個大目标下,混部團隊對現有架構進行了更新,在離線排程器伏羲和線上排程器sigma之上演化出一個總體的資源協調者0層,主要承載離線和線上資源記賬、區分優先級的資源配置設定和總體協調的作用,可以把它形象的看成是一個大的賬本,上面的每一條記錄便是某台機器上cpu/mem/io資源如何劃分給線上和離線業務,進而解決混部環境線上和離混資源的資源配置設定問題。
在混部業務穩定性保障方面,通過對兩類資源(CPU和MEM)按優先級劃分的政策進行使用,其中以CPU資源為例劃分為三個級别,分别為金牌,CPU采用綁核模式具有最高優排程搶占優先級;銀牌,線上和離線高優先級任務使用,離線銀牌資源不會被線上任務驅趕,保障排程優先級和穩定性;銅牌,離線大部分worker申請銅牌資源使用。線上S10和S20需要使用CPU時可以驅趕離線銅牌對CPU核的占用,實作資源充足時離線成分用滿,資源緊張時線上能及時搶占的效果。
得益于前文所述的新混部排程架構,0層和1層排程間的資源配合有了一個明顯提升,去年的混部方案中,0層隻保留靜态的叢集或單機資源配比,并且比例生效都是通過外部人為設定,而今年0層精細化單機賬本之後,每台單機的配比則交給fuxi和sigma自動調整,按照容器所需資源比例進行設定。借助于資源配比的按需調整功能,快上快下也實作了完全自動化的流程驅動。
混部快上快下是指在大促過程中,離線快速地資源釋放給線上或線上快速給歸還資源給離線的過程;自動化流程完美的實作了規模化混部目标,通過完整鍊路優化,最終實作了快上2小時,快下1小時的時間目标,也正是如此快速的資源伸縮操作保障了離線業務在資源相對緊缺的情況下安全順滑支援規模性壓測及雙11大促的完整支援。
今年雙11,有超過50%的流量運作在混部叢集;其中離線上混部(即離線提供資源給線上交易使用)支撐了40%的交易流量;在離線混部(即線上出讓部分資源用于離線任務運作)一共部署約了數千台機器資源,為離線業務團隊減少數千台機器采購。
Sigma排程能力更新
sigma是阿裡巴巴自研的資源排程器,排程引擎是Sigma排程的核心,排程引擎的優劣,直接決定了其排程的業務的穩定性。今年排程能力更新主要做了以下幾方面工作:
-
業務運作時保障
今年排程引擎團隊首次提出了資源确定性的SLO目标,将業務方關心的資源争搶、超賣、CPU核重疊等容器運作時的穩定作為第一優先級任務解決,在確定核心應用CPU邏輯核不堆疊的前提下,滿足了同應用不同容器和同容器對端核争搶的需求,進而提升了資源穩定性。
-
引擎更新
新版Sigma 排程器在原有基礎上進行了重新設計和架構更新,相容開源kubernetes架構,在數萬筆交易容量叢集上得到了大規模驗證。
-
Pouch容器
今年雙11,超過10%的實體機上線了pouch開源回遷版本,為探索阿裡内外使用同一個容器打下基礎。同時,容器團隊還在Containerd-1.0 方面做了大量的性能優化/鎖優化/定時任務CPU優化,確定容器運作時穩定。
-
CpuShare精細化資源配置設定
CpuShare是一種基于linux cgroup對應用的cpu和記憶體進行精細化的控制和使用的技術,雙11前線上資源池整體share容器數占比10%,其中核⼼應⽤5%,次核⼼應⽤10%,非核⼼應⽤20%+。
大促雲化
大促雲化是指大促時通過短時間使用阿裡雲的計算能力,大促峰值過後将資源釋放歸還給公共雲繼續售賣的一種資源使用方式。
大促雲化的本質是資源的雲化,包括計算資源、網絡、IDC、伺服器全部基于阿裡雲的底層技術,從2014年提出大促雲化後,大促雲化方案經過了多次更新改進,通過vpc網絡打通雲上雲下互訪,實作大促過後直接釋放資源即可直接售賣,進而減少資源占用時長和改造成本。
- 全量使用公共雲方案,網絡層通過VPC方案實作公共雲環境與彈内環境互通;通過使用阿裡雲的ECS buffer,減少交易的資源采購;
- 計算存儲分離,使用阿裡雲的盤古做為遠端盤存儲,大大減小實體機本盤,降低了大促資源成本;
- 此外,在應用、中間件、資料庫層面大規模部署神龍雲伺服器,總體效果良好。
大規模計算存儲分離
2018年是計算存儲分離破局之年,基于盤古遠端盤,部署了數千台線上主控端,超過50%的叢集使用了存儲計算分離技術,這項技術有望大幅減少未來阿裡集團在伺服器SSD盤的硬體成本投入。
雙11備戰之核心備戰
核心是系統運作的基礎,今年核心團隊的備戰主要集中在以下兩個方面:
-
4.9 版本核心部署
Linus Torvalds在2016年12月11日釋出了Linux核心4.9的正式版本,由于4.9新核心修複了大量老核心已知bug,4.9版本的作業系統比目前版本相比穩定性更高,當機率也有明顯下降;目前裝機量達到數十萬台級别,雙11交易叢集約90%的交易部署在4.9核心環境,未來将繼續擴大新核心的更新。
-
混部環境核心調優
離線和線上混部的叢集中,由于主控端整體資源有限,如何避免離線任務的運作對線上任務造成影響,成為業界難題;今年混部實施以來,發現混部任務排程到線上主控端後線上業務頻繁回報容器及主控端load高或CPU sys高的情況;經過核心團隊介入排查,釋出主控端記憶體檔案緩存過大,申請新記憶體時觸發整機記憶體直接回收,導緻系統開銷大;優化思路:調整整機記憶體背景回收值(調整記憶體水線,提高記憶體Normal Zone的LOW/HIGH水線),提前回收檔案緩存頁面,避免核心進入直接回收流程。
更新檔前:MIN=8G, LOW=10G, HIGH=12G,LOW與MIN之間隻有2G,當應用配置設定大量記憶體時,kswap還沒來得及背景回收,系統記憶體就低于8G,這時應用隻能進入direct reclaim,直接去回收。
更新檔後:MIN=8G,LOW=25G,HIGH=27G
雙11備戰之JVM備戰
JVM協程(wisp)
JVM協程今年部署範圍交易核心應用擴大到導購,大促期間整體某導購核心應用水位從去年30%提升到今年的60%,業務沒有新增機器。
ZenGC
- TenureAlloc
部分核心應用預設開啟ZenGC,GC暫停改善50%;
- GCIH2.0
核心應用部署GCIH2.0,在安全性和性能上進行了改進,GC暫停時間最多改進20+%。
- ElasticHeap動态堆記憶體
雙十一0點之前低流量時降低Java程序記憶體20%+,雙十一0點迅速恢複Java堆全量使用,峰值過後,繼續縮小Java堆,減少程序記憶體20%+,99%和最大暫停大幅好于CMS,CMS為G1的150%~5X。
- EarlyOldScavenge
在Lindorm Velocity證,大幅減少Concurrent GC從1天30+次,減少為1天1次,推算堆增長率減少95%以上。
未來展望
系統軟體為打造阿裡巴巴高性能、低成本的基礎設施,在賦能業務發展、降低阿裡巴巴資源運作成本方面實作了初步的技術積累,展望未來,系統軟體仍有巨大的發展空間,歡迎各路技術牛人加入系統軟體,一起打造阿裡巴巴商業作業系統的核心軟體。