多入口性能壓測大殺器:一站式壓測平臺OPM背后的技術(shù)揭秘
我們面臨的挑戰(zhàn)
阿里的雙十一已經(jīng)成為全球的超級工程了,在這個超級工程中,全鏈路壓測是很重要的一個環(huán)節(jié)。整個集團層面的全鏈路壓測,涉及到的BU和團隊非常多,對于這樣一個涉及多個團隊協(xié)作的事項,如何盡量的減少人員的投入,減少全鏈路壓測的次數(shù),同時又能保證壓測能夠達到目標,成為一個必須要去突破的問題。
集團的全鏈路壓測主要涉及交易和導(dǎo)購兩部分。交易的全鏈路啟動比較早,相關(guān)的平臺,工具和流程經(jīng)過幾年的沉淀,已經(jīng)比較成熟,形成了較為穩(wěn)定的體系。導(dǎo)購的全鏈路壓測,因為導(dǎo)購業(yè)務(wù)的特殊性,例如入口流量存在較多的不確定性,系統(tǒng)之間的調(diào)用錯綜復(fù)雜,加上導(dǎo)購的業(yè)務(wù),日常態(tài)和大促態(tài)差異比較明顯等。
以上是經(jīng)過抽象之后的導(dǎo)購的全鏈路壓測模型,實際的模型,會更復(fù)雜,入口的分散,系統(tǒng)之前的互相依賴等,如下圖顯示。
另外導(dǎo)購的全鏈路壓測2016年才啟動,還沒能夠形成體系。針對這些問題和挑戰(zhàn),2017年,我們通過構(gòu)建一站式的全鏈路管理平臺。克服了上述的問題,取得了良好的效果。
在2017年導(dǎo)購的全鏈路壓測啟動之前,我們先回顧了過去導(dǎo)購全鏈路壓測經(jīng)歷過的問題。
1. 壓測的人力消耗已經(jīng)越來越不可管控,全鏈路壓測導(dǎo)購人力消耗,150人,雙十一當天1000人,如何減少人力已經(jīng)成為迫在眉睫的事情
2. 應(yīng)用多,入口分散,每次壓測都需要調(diào)整流量模型,頻繁的調(diào)整對收口業(yè)務(wù)的穩(wěn)定性帶來了較大壓力
3. 無歷史參考數(shù)據(jù),換一撥人很多歷史經(jīng)驗無法沉淀,造成人力的巨大浪費
4. 上下游流量人肉的收集與管控,導(dǎo)購場景相互之間網(wǎng)狀調(diào)用,造成長期流量評估的巨大誤差
5. 無壓測性能過程管控,研發(fā)人員一有性能問題***反應(yīng)就是要機器
針對這些問題,我們構(gòu)建了一站式的全鏈路壓測平臺。以下是平臺核心功能,主要包括壓測構(gòu)造、壓測執(zhí)行(偏監(jiān)控)、分析問題和定位。
壓測構(gòu)造
導(dǎo)購的全鏈路壓測,壓測需求的構(gòu)造,是很重要的一個環(huán)節(jié),對壓測結(jié)果的準確性有很重要的影響,同時也需要不小的工作量。2017年,我們在壓測構(gòu)造方面提供了以下的豐富的能力
(1)數(shù)據(jù)工廠:提供快速構(gòu)建壓測數(shù)據(jù),支持多種類型和靈活的參數(shù)構(gòu)建規(guī)則,并實現(xiàn)了壓測數(shù)據(jù)在關(guān)聯(lián)系統(tǒng)之間的共享,降低了壓測數(shù)據(jù)準備的工作量提高了壓測數(shù)據(jù)的準確性
(2). 壓測流量模型和需求: 導(dǎo)購的流量存在多單元入口,以及入口流量的不確定性,這對壓測需求的構(gòu)建有一定的影響。2017年,我們通過構(gòu)建壓測流量模型。并以此作為基礎(chǔ),直接一鍵構(gòu)建壓測需求,并支持壓測需求的批量更新,合并,復(fù)制,需求內(nèi)鏈路壓測數(shù)據(jù)之間的共享等,大大降低了壓測需求構(gòu)建的工作量。
流量模型梳理
近1000個鏈路場景,系統(tǒng)與系統(tǒng)之間存在互相調(diào)用,系統(tǒng)流量之間存在千絲萬縷的聯(lián)系,給核心系統(tǒng)的業(yè)務(wù)評估帶來了巨大的挑戰(zhàn)。評估流量模型的時候很容易產(chǎn)生遺漏,也容易產(chǎn)生評估的偏差。OPM可以實時錄入線上流量,產(chǎn)生流量調(diào)用比例圖(如上圖所示),當入口流量確定時,可以協(xié)助用戶梳理整體流量,為流量的梳理提供幫助
在這個基礎(chǔ)上,我們增加了導(dǎo)購全鏈路壓測的全局視角,通過提供以下的能力,達到全鏈路壓測的一體化。
1.任務(wù)管控:可以管控導(dǎo)購全鏈路壓測的所有應(yīng)用鏈路,包含壓測需求、壓測鏈路、流量模型、并提供了全局流量視圖。對導(dǎo)購的全鏈路壓測的全貌,可以實時查看。達到對整個壓測的可視化
2. 進度和變更管控:通過和ebay的協(xié)作,對全鏈路壓測的時間進度,壓測變更,等進行管控,使得整個壓測的過程,有條不紊的進行。
壓測執(zhí)行時
導(dǎo)購的全鏈路壓測,涉及到的應(yīng)用比較多,要關(guān)注的點比較多,例如入口流量是否正確,各單元的流量比例是否正確,是否有跨單元調(diào)用,實際壓測流量和預(yù)設(shè)值是否一致等等。借助現(xiàn)有的監(jiān)控還滿足不了。為此,2017年,我們在壓測執(zhí)行時的全局監(jiān)控方面進行了一些努力。除去集團監(jiān)控實現(xiàn)的功能外,OPM還提供了以下的全局視圖。
1. 壓測大盤:實時展現(xiàn)壓測流量,包括入口流量,各單元的流量,壓測流量與預(yù)估值的實時對比等,可以全局監(jiān)控導(dǎo)購的流量是否符合預(yù)期
2. 全局系統(tǒng)監(jiān)控大盤:系統(tǒng)指標(cpu、load、網(wǎng)絡(luò)等)、服務(wù)指標(rt、qps、超時等)、上下游調(diào)用量等,可以很直觀的發(fā)現(xiàn)整個全鏈路中,性能瓶頸在哪個應(yīng)用上。
3. 運維狀態(tài)大盤:系統(tǒng)監(jiān)控、業(yè)務(wù)監(jiān)控、預(yù)案、限流。
上述的全局視圖,除了在壓測執(zhí)行的過程中可以實時查看,OPM也提供了快照的功能,持久化在平臺中,可以重新進行分析和查看
分析定位
OPM通過整合集團內(nèi)的各監(jiān)控平臺,構(gòu)建了分析定位性能問題的基礎(chǔ),
1. 變更分析:全鏈路壓測性能出現(xiàn)問題時,我們首先想回到壓測的那個時刻,了解當時執(zhí)行了什么變更?推送了什么配置?當時的性能快照是什么?OPM提供實時快照能力,實時記錄時間的所有變更,為后續(xù)性能的分析提供數(shù)據(jù)支持。系統(tǒng)變更聚合展示,可以快速定位出性能的變化與系統(tǒng)變化之間的關(guān)聯(lián)。
2. 性能快照:系統(tǒng)性能快找,通過自定義的性能快照采集和生成,方便事后對過去任意時間系統(tǒng)狀態(tài)進行查詢和分析
2017年的新嘗試--構(gòu)建性能基線
2017年,我們針對導(dǎo)購的核心應(yīng)用,啟動了構(gòu)建性能基線的計劃。通過周期性的在隔離環(huán)境進行基線壓測,及時發(fā)現(xiàn)應(yīng)用的性能問題,盡早發(fā)現(xiàn),盡早解決,避免了性能問題遺留到大促前,大大降低了系統(tǒng)的性能風險。
隔離環(huán)境(強調(diào)性能基線) 何在白天不干擾線上業(yè)務(wù)進行常態(tài)化的集群壓測一直是性能基線的難點,opm提供隔離環(huán)境,使線上集群壓測能夠常態(tài)化的進行。
首先系統(tǒng)系統(tǒng)自動化的隔離一堆機器,隔離的環(huán)境與線上系統(tǒng)邏輯隔離,壓測流量自動引流至隔離環(huán)境。當壓測結(jié)束時,隔離機器自動歸還給線上環(huán)境,一鍵恢復(fù)
性能基線與趨勢: 通過持續(xù)的基線壓測和基線管理,可以全局查看應(yīng)用的性能以及變化趨勢,并對基線壓測過程中發(fā)現(xiàn)的問題進行跟蹤和解決。使應(yīng)用的性能瓶頸在日常的基線壓測就發(fā)現(xiàn)和解決,避免了再大促全鏈路壓測時才發(fā)現(xiàn),降低了系統(tǒng)的風險。
2017年,我們?nèi)〉玫男Ч?/strong>
1. 人力成本:從之前多個人協(xié)同負責一個系統(tǒng)壓測,開始轉(zhuǎn)變成一個人可以慢慢負責一條鏈路的壓測
2. 壓測準備時長:從每次壓測需要提前幾天的準備到隨時隨刻可以進行全鏈路壓測
3. 不確定性到確定性:下游業(yè)務(wù)每次評估壓測流量從收集信息,靠猜的不確定性到系統(tǒng)給出結(jié)果流量的確定性
適用場景
1.適用壓測模型:入口分散,有統(tǒng)一收口的壓測模型
2. 隔離環(huán)境與性能基線:常態(tài)化的支撐線上性能壓測
3. 復(fù)雜系統(tǒng)的流量模型管控:壓測鏈路上千場景的流量模型管控