“穩(wěn)定,壓倒一切”,如何實現(xiàn)雙11的平穩(wěn)支撐是阿里技術(shù)人永恒的目標(biāo)。今天,阿里資深技術(shù)專家游驥,將圍繞“容量規(guī)劃的精準(zhǔn)度與確定性”、“容量規(guī)劃相關(guān)環(huán)節(jié)的效率和成本”兩個因子,詳細解讀阿里容量規(guī)劃的五次歷史演進。
阿里資深技術(shù)專家游驥
2018年是雙11的第十個年頭。每年雙11備戰(zhàn)環(huán)節(jié),穩(wěn)定性都是最受關(guān)注的頭等大事。
十年以來,穩(wěn)定性相關(guān)的技術(shù)體系和雙11就像DNA的雙螺旋,彼此相生相長。在雙11場景的錘煉之下,阿里的穩(wěn)定性技術(shù)體系也成為了行業(yè)的標(biāo)桿和效仿對象。
穿越10年,雙11給技術(shù)留下最深的認知應(yīng)該算是突發(fā)大流量的沖擊。
從第一年開始,雙11的0點時刻就代表了我們的歷史最高業(yè)務(wù)訪問量,它通常是日常流量的幾十倍甚至上百倍。因此,如何讓一個技術(shù)和業(yè)務(wù)持續(xù)復(fù)雜的分布式站點去更平穩(wěn)支撐好這突如其來的流量沖擊,是我們這10年來一直在解的題。
在雙11非常多的備戰(zhàn)環(huán)節(jié)中,容量規(guī)劃是最重要也最具挑戰(zhàn)的環(huán)節(jié)之一。在如此龐大的分布式系統(tǒng)架構(gòu)下,該為每一個業(yè)務(wù)系統(tǒng)分配多少資源成為一大技術(shù)挑戰(zhàn)。
其實,容量規(guī)劃就好比是一個天平。天平的一端是成本,我們需要盡可能地用較少的資源來支撐好我們的業(yè)務(wù);另一端是穩(wěn)定性,在成本盡可能低的情況下,各個系統(tǒng)都能跑在一個合適的水位,既保障業(yè)務(wù)的正常運轉(zhuǎn),又不出現(xiàn)局部的資源浪費。
容量規(guī)劃演進路線
圍繞“容量規(guī)劃的精準(zhǔn)度與確定性”、“容量規(guī)劃相關(guān)環(huán)節(jié)的效率和成本”這兩個最核心的驅(qū)動力因子,容量規(guī)劃主要經(jīng)歷了五次大的演進:
這個時期,雙11對于系統(tǒng)的資源需求尚處于人工估算階段。比如2009年的容量規(guī)劃就是主要通過人工估算的方式來完成的。各個系統(tǒng)的負責(zé)同學(xué)聚在一起開個會,將信息匯總到excel表格上,花上半天或者一天的時間就把容量規(guī)劃的機器預(yù)算給定下來了。而且,各個系統(tǒng)通常都留了比較大的機器冗余,業(yè)務(wù)的流量也不大,即使估算得不準(zhǔn)也不會造成大的業(yè)務(wù)影響。
2009年的雙11,雖然業(yè)務(wù)量級還不夠近年雙11峰值的零頭,但是業(yè)務(wù)量的暴漲卻直接給我們的系統(tǒng)來了一輪非常大的沖擊。
因此,在2010年,我們開始著手開發(fā)一套系統(tǒng)化的容量規(guī)劃平臺,這個時候,容量計算的公式也被第一次提了出來。在這個公式里有兩個至關(guān)重要的變量:預(yù)估業(yè)務(wù)量級與單機能力,預(yù)估業(yè)務(wù)量級代表對系統(tǒng)調(diào)用量的估算,而單機能力則代表單臺機器最大的服務(wù)能力。
容量規(guī)劃公式
其實,容量規(guī)劃公式理解起來并不復(fù)雜,預(yù)估業(yè)務(wù)量級除以單臺機器的服務(wù)能力得到業(yè)務(wù)系統(tǒng)所需要的最小機器數(shù),最小機器數(shù)作為理論的機器數(shù)下限,加上一個buffer值確保萬無一失,得出最終需要準(zhǔn)備的機器數(shù)。
預(yù)估業(yè)務(wù)量級為雙11等業(yè)務(wù)場景下的業(yè)務(wù)系統(tǒng)調(diào)用量的一個預(yù)計值,比如雙11 0點同時會有多少人訪問商品詳情、有多少人訪問我的購物車、有多少人下單、有多少人付款等等,預(yù)估業(yè)務(wù)量級我們通過BI(商業(yè)智能)的分析,結(jié)合相應(yīng)的預(yù)測算法就能夠拿到比較準(zhǔn)確的值。
單臺機器的服務(wù)能力相對就沒那么好拿到,在2010年容量規(guī)劃平臺的1.0版本當(dāng)中,單機能力的獲取主要通過線下的性能測試來獲取。我們當(dāng)時已經(jīng)擁有非常成熟的線下的性能測試環(huán)境,于是在性能測試環(huán)境對各個業(yè)務(wù)系統(tǒng)逐個進行性能測試,獲得了每個業(yè)務(wù)系統(tǒng)的單機能力值。
解決了兩個關(guān)鍵變量的之后,Csp容量規(guī)劃平臺正式登上阿里的技術(shù)舞臺,在2010年我們完成了從人工容量規(guī)劃到系統(tǒng)化容量規(guī)劃的過度。
Csp容量規(guī)劃平臺上線之后,在當(dāng)年的雙11當(dāng)中立刻起到立竿見影的效果,相對于之前純?nèi)巳獾娜萘恳?guī)劃模式,不但節(jié)省了人力成本,更重要的是通過數(shù)據(jù)計算的方式取代了傳統(tǒng)的經(jīng)驗預(yù)估方式,大幅提升了我們在容量規(guī)劃的準(zhǔn)確性。
為了獲取到更加精準(zhǔn)的單臺機器服務(wù)能力值,在線上壓力測試的模式上,我們進行了非常多的探索,積累了不少經(jīng)驗,這些經(jīng)驗后續(xù)為業(yè)界的容量規(guī)劃之路樹立了典范:
a.線上模擬壓力測試獲取單機能力
線上模擬壓力測試對線上應(yīng)用系統(tǒng)發(fā)起模擬調(diào)用。模擬請求保障了環(huán)境的真實性,能夠很大程度提升單機能力的準(zhǔn)確性。線上模擬壓力測試操作起來比較便捷,能夠借助的工具也非常多。
b. 線上流量復(fù)制壓力測試獲取單機能力
線上模擬壓力測試解決了壓測環(huán)境的真實性問題,卻沒有完全解決流量真實的問題,如果能做到流量和環(huán)境都是真實的,通過線上壓力測試拿到的單機能力才更具備說服力。線上流量復(fù)制通過將線上某一臺機器的流量擴大N倍復(fù)制到壓測的目標(biāo)機器,當(dāng)線上機器的流量非常低的時候,復(fù)制N倍流量還能夠有效地將流量進行放大。
c. 線上引流壓力測試獲取單機能力
針對流量復(fù)制帶來復(fù)雜性和成本問題,我們繼續(xù)去探索一種既精準(zhǔn)又方便快捷的線上壓測模式。阿里的業(yè)務(wù)系統(tǒng)都是分布式架構(gòu),一個業(yè)務(wù)系統(tǒng)由若干機器同時提供服務(wù),如果能夠把分布式環(huán)境的流量比較集中地調(diào)用到某一臺機器,就能起到壓測一臺機器的目的!于是線上引流壓力測試的模式被用到生產(chǎn)環(huán)境。
線上引流壓力測試使得阿里集團大部分業(yè)務(wù)系統(tǒng)能夠獲取到非常精準(zhǔn)的線上單機能力,是目前使用的最廣泛的一種線上單機壓測模式。
容量規(guī)劃平臺從單個點的維度解決了容量規(guī)劃的問題,然而在進行單點容量規(guī)劃的時候,有一個前提條件:下游依賴的服務(wù)狀態(tài)是非常好的,實際情況并非如此。
此外隨著分布式系統(tǒng)架構(gòu)的技術(shù)組建越來越多,也很難將所有的技術(shù)環(huán)節(jié)從前到后都做好單點容量規(guī)劃。
雙11 當(dāng)天0點到來的時候,從CDN到接入層、前端應(yīng)用、后端服務(wù)、緩存、存儲、中間件整個鏈路上都面臨著巨大流量,這個時候應(yīng)用的服務(wù)狀態(tài)除了受自身影響,還會受到依賴環(huán)境影響,并且影響面會繼續(xù)傳遞到上游,哪怕一個環(huán)節(jié)出現(xiàn)一點誤差,誤差在上下游經(jīng)過幾層累積后會造成什么影響誰都無法確定。
所以除了進行事先的容量規(guī)劃,我們還需要建立起一套驗證機制,來驗證我們各個環(huán)節(jié)的準(zhǔn)備都是符合預(yù)期的。驗證的最佳方法就是讓事件提前發(fā)生,如果我們的系統(tǒng)能夠提前經(jīng)歷幾次“雙11”,容量的不確定性問題也就解決了。
2013年,對雙11穩(wěn)定性來說是一個大的里程碑,我們在生產(chǎn)環(huán)境采取模式雙11的方式來全方位驗證容量的確定性。也就是說,全鏈路壓測的誕生解決了容量的確定性問題。2013年之后基于全鏈路壓測為核心,打造了一系列容量規(guī)劃相關(guān)的配套生態(tài),提升能力的同時,降低整個環(huán)節(jié)的成本、提升效率。
事實上,提前對雙11進行模擬聽起來就不簡單,畢竟雙11的規(guī)模和復(fù)雜性都是空前的,要將雙11提前模擬出來,難度可想而知,全鏈路壓測的誕生主要攻克了下面4個大的挑戰(zhàn):
1、跟雙11相關(guān)的業(yè)務(wù)系統(tǒng)上百個,并且牽涉到整條鏈路上所有的基礎(chǔ)設(shè)施和中間件,確保在整個流程中壓測流量能夠通暢無阻。
2、壓測的數(shù)據(jù)怎么構(gòu)造(億萬級的商品和用戶),數(shù)據(jù)模型與雙11盡可能貼近。
3、全鏈路壓測直接在線上的真實環(huán)境進行雙11模擬,保障對線上的數(shù)據(jù)和業(yè)務(wù)沒有影響。
4、雙11是一個上億用戶參與的盛大活動,制造每秒幾萬次用戶行為的超大規(guī)模流量平臺。
每年雙11前夕,全鏈路壓測都要組織好幾次,不斷地通過壓測發(fā)現(xiàn)問題進行迭代優(yōu)化、全方位驗證業(yè)務(wù)的穩(wěn)定性,我們的系統(tǒng)也只有在經(jīng)過了全鏈路壓測的驗證之后才有信心迎接雙11 那天0點的到來。全鏈路壓測將是雙11、雙12等大促備戰(zhàn)最重要的核武器,并且隨著業(yè)務(wù)的發(fā)展不斷進化,持續(xù)發(fā)揮著不可替代的作用。
全鏈路壓測經(jīng)過幾年的發(fā)展,從一開始的單一壓測平臺,逐步演變成一套技術(shù)生態(tài)體系。
隔離環(huán)境、邊壓邊彈、功能預(yù)演、商家端全鏈路壓測等技術(shù)產(chǎn)品都開始成為全鏈路壓測生態(tài)家族的重要成員,協(xié)力為保障好雙11的穩(wěn)定性發(fā)揮重要作用。
全鏈路壓測體系演進
全鏈路壓測除了在能力上的不斷演進外,壓測效率也在不斷的提升,智能化的技術(shù)能力逐步切入到壓測場景。
通過“root cause”自動定位壓測中出現(xiàn)的問題,在壓測過程中,進行變壓邊彈,把容量配比調(diào)節(jié)至最優(yōu),系統(tǒng)產(chǎn)出詳細的壓測報告,希望這一切都在沒有人的情況下自動完成。
“尖兵計劃“項目正在朝著這個目標(biāo)不斷邁進,并且已經(jīng)取得了階段性的進展,在2017年和2018年全鏈路的首次壓測成功率大幅提升。之前可能要壓很多次才能壓測成功,通過“尖兵計劃”進行無人的常態(tài)化隔離環(huán)境壓測,提前發(fā)現(xiàn)80%的表層問題,大型壓測的阻斷率大幅下降。
除了在智能壓測上的突破,全鏈路壓測的身份也有了一個大的轉(zhuǎn)變。壓測平臺從一個阿里內(nèi)部的大促備戰(zhàn)利器,通過產(chǎn)品化升級,輸出到了阿里云PTS
成千上萬的外部互聯(lián)網(wǎng)企業(yè)可以站在阿里的肩膀上,通過PTS完成一次精準(zhǔn)的容量壓測,輕松具備跟阿里一樣的容量規(guī)劃能力。在這背后全鏈路壓測也經(jīng)歷了一次大的技術(shù)演進。
1、內(nèi)外一套:用一套核心壓測技術(shù)底座同時支撐了內(nèi)外部的兩套壓測體系,意味著大部分的工作都是可以復(fù)用的,極大降低了運維成本。
2、壓測能力升級:除了具備每秒億級別的請求流量輸出,同時具備秒級的大流量和大數(shù)據(jù)調(diào)度能力,展現(xiàn)出讓業(yè)界驚嘆的壓測能力。
3、開放:具備了更加開放的擴展性,在支撐了更大規(guī)模的外部用戶群體的同時也更好支撐了阿里愈加豐富的經(jīng)濟體業(yè)務(wù)形態(tài);
4、開源兼容:兼容主流開源生態(tài),讓已經(jīng)配置的壓測需求可以不做任何變化直接跑在壓測平臺上;
5、解決方案化:在整個壓測的技術(shù)上下游,打造了錄制器、數(shù)據(jù)工廠、指令集、診斷專家等技術(shù)模塊,從單一壓測平臺演變成為整個容量規(guī)劃的閉環(huán)解決方案。
未來,我們將全力為全球消費者、商家、合作伙伴帶來完美的體驗。十年牧碼,一騎絕塵!
義烏漲完廣州漲 通達兔等快遞全年或增收數(shù)十億!
1570 閱讀多多買菜:悶聲增長
1452 閱讀又出傷人事件!買A退B、簽收訛詐、押金不退……快遞小哥如何避坑?
1246 閱讀歐盟《關(guān)鍵原材料法案》:全球資源戰(zhàn)略格局的重大轉(zhuǎn)變及應(yīng)對策略
1276 閱讀18天抵歐!寧波舟山港迎來史上最快中歐航線
1183 閱讀傳網(wǎng)絡(luò)貨運“獎補”全面暫停,誰破防了?
1096 閱讀2025年1-6月港口貨物、集裝箱吞吐量
1079 閱讀興滿物流華北首個樞紐落戶普洛斯?jié)蠄@區(qū),開啟零擔(dān)物流新格局
1070 閱讀2025年7月中國快遞發(fā)展指數(shù)報告
793 閱讀國家鐵路集團950億成立新藏鐵路公司
778 閱讀