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