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
























































評論