天天看點

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

背景

“今年的雙11是全球極大内容電商場的超級爆發,消費者、技術、内容與商業生态之間每一秒都在産生激烈共振,實時性、複雜性和持續峰值的疊加令其成為全球技術頂峰。2020年雙11,阿裡巴巴峰值交易達到了58.3萬筆/秒,其背後的商家鍊路也承受着史無前例的壓力”阿裡巴巴副總裁湯興如此描述今年的雙11。

阿裡商家業務域涉及集團近20條業務線,100多個場景,400+鍊路,部分業務深度融入在導購、交易鍊路中。商家鍊路業務涵蓋淘系的上千萬商家及數百家核心三方服務商的夥伴。以往由于平台和商家IT基礎設施存在“水位差”,平台很難幫助商家進行系統的改造更新和全鍊路驗收。随着阿裡面向商家與生态夥伴推出了新一代數字化基建體系,借助雲原生技術引擎與雲IT治理能力,幫助商家與生态夥伴重構系統的高可用基線,使得越來越多的商家具備了和阿裡同等量級的超大規模資料處理能力。

正常備戰中各個業務依靠單鍊路壓測,缺少互通關聯,缺少全局把控,容易有品質盲點,隐患容易被忽視,風險較高。商家鍊路出現問題,直接影響商家生産經營能力,對商家和消費者造成重大的體驗傷害。業内的全鍊路壓測普遍面向C端場景,B端場景往往重視度不夠。商家端的場景結構極其龐雜,涉及内部系統還涉及衆多三方系統,開展全鍊路壓測面臨着諸多挑戰。為有效預防風險,提升各個業務以及三方合作夥伴系統穩定性,提升使用者體驗,今年我們克服了重重困難首次面向商家鍊路開展了全鍊路壓測。

挑戰

▐ 核心難點

商家業務涵蓋商家工具、消息、多媒體、算法等多種業務形态,各應用間調用錯綜複雜,如何理清核心鍊路的依賴,保障核心鍊路不遺漏是開展壓測的首要挑戰。

壓測實施上,如何模拟數百個場景流量的疊加耦合,并留好應對突發情況的操作空間,且在同一時間批量将流量拉到峰值是壓測執行的一大挑戰。

商家業務涉及衆多合作夥伴服務商的系統,阿裡生态的複雜性,使得接入阿裡平台的服務商系統架構存在異構化、多樣化、性能差異大等多方面技術挑戰,每個服務商對于穩定性的認知存在差異。

▐ 解決方案

針對上述挑戰,我們的核心解決方案為:

  • 統一流程規範标準、壓測組織協同、統一驗收複盤。
  • 工具支撐壓測一體化。
  • 壓測涵蓋預案、限流、演練、監控等内容,模拟大促真實情況。
  • 首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結
    全鍊路壓測方案

1、統一流程規範

各個業務參與全鍊路壓測明确準入準出标準。全鍊路壓測的基本準入原則:每個場景單鍊路壓測通過後才能進入全鍊路壓測。準出标準包括:系統水位、流量比例、響應時間、緩存命中率、限流、jvm名額等。服務商系統與阿裡系統标準一緻。

流程上統一進行場景review、鍊路評審、全鍊路壓測以及複盤,複盤中的問題同步優化解決。

2、工具支撐一體化

在集團已有的壓測能力基礎上,我們重點在商家鍊路分析,流量評估,壓測模型、結果校驗自動化等方面建設一站式壓測工具,解決商家全鍊路壓測的核心問題。

鍊路分析

壓測場景選取的基本原則:

  • 大流量場景
  • 核心鍊路場景
  • 複雜業務鍊路場景
  • 流量擴散場景。

參照以上原則,在我們在集團中間件支援的基礎上,開發了鍊路分析場景推薦工具,用人工+工具check雙保險的方式進行鍊路模型生成。示意原理如下圖,應用A某接口的一次調用,我們可以擷取其下遊應用的trace,通路的資料庫或者緩存,并且分析出1次調用對下遊流量的放大。

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

鍊路示意圖

其工作流程如下:

  • 統計流量調用的服務,存儲等名額,擷取對下遊的調用次數,得到對下遊請求的放大。
  • 擷取流量大于某門檻值的入口鍊路。
  • 擷取調用鍊路深度或者依賴調用大于某門檻值的鍊路。
  • 擷取翻倍調用大于某門檻值的鍊路。

流量評估

正常流量評估通常是根據監控和上遊調用來評估接口流量,評估比較理想化,容易産生誤差。如果前期流量預估不充分,會導緻壓測無法達到目标或遠超目标值,靠壓測來發現這些問題成本太高。對此我們引入了深度機器學習,利用算法能力來做智能預測,更加精确的進行流量評估。其主要的工作原理如下:

  • 抓取應用的出入口流量、RT、QPS、錯誤率、應用系統水位等資訊。
  • 應用深度機器學習,對基礎資料進行分析學習,産生該應用的算法模型。該模型可以根據入口流量,預估出口流量、應用系統水位等資訊。效果如圖所示。
首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

接口流量模拟對比圖

其核心思想為:

算法每天根據線上真實資料持續學習,持續優化,生成可靠模型。

使用者輸入接口預估流量,平台輸出預估的下遊接口流量、存儲QPS、機器數和系統水位等資訊。

模型建構

結合業務場景,我們建立了兩種壓測模型:0點模型和非0點模型。0點模型涉及場景在大促0點流量達到峰值,非0點模型場景峰值則在其他時間達到峰值,壓測模型的設計不是簡單的覆寫業務,還需要考慮各個業務之間的流量耦合。有上下遊關系的鍊路,下遊的壓測流量也是來自上遊。除了考慮商家域内的流量耦合,還要考慮集團其他域的流量耦合。是以,與之配合的還有非常多的壓測預案,用以控制壓測流量的準入準出。

有流量的耦合就要考慮耦合流量不足的情況,不是每次壓測上遊都會有充足流量打到下遊。在保障能夠耦合上遊流量的同時,下遊業務自身還要具備流量補充能力,當來自上遊的流量不足時,自身可以補充足夠的流量,滿足自身系統的驗證。

3、壓測執行

壓測資料準備采用淘系技術品質部自研鳳凰平台[見附1]錄制線上流量做“平移”,場景資料更加真實有效。錄制化也提升了資料準備的效率,一次錄制多次使用。場景管理上做到了1人1鍵執行所有的場景,極大的節約人力。每次全鍊路壓測商家和交易、導購都會同步開展,0點流量全部打到100%,以驗證跨業務域的流量依賴和疊加的情況。從壓測開始到流量拉到100%時間非常有限,在壓測初期,這個過程中通常會伴随着⾮常多的問題。這些問題在前期準備過程中很難發現,主要問題有以下⼏類:

  1. 壓⼒分布不均。
  2. 模型緊急調整。
  3. 資料⽂件緊急修正。
  4. 個别壓測機異常。
  5. 受壓測管控影響,服務調⽤受限。
  6. 壓測任務緊急管控。

執行⼈員需要⼀邊控制不受影響的業務繼續按計劃加壓,同時需要迅速對出現的問題作出判斷,給出解決方案。對于能夠快速修正的場景,⾸先将其從壓測活動中單獨摘掉,調整完成後重新關聯到壓測任務中。對于⽆法快速修正的場景,要迅速協調業務同學進⾏單鍊路操作。受上述問題影響,現場需要制定不同的應對政策,主要包括以下幾種情況:

  • 壓測過程中某個場景需要緊急解除安裝壓⼒,其他場景保持。
  • 壓測過程中某個場景沒有達到⽬标,但系統資源已經出現瓶頸,需要保持壓⼒⽔位排查問題,其餘業務繼續加壓。
  • 壓⼒拉到100%個别業務沒達到預期需要繼續增加壓⼒。

這⼏類問題在前期壓測過程中出現頻率⾮常⾼,如果前期準備不到位會阻塞壓測節奏。

此外全鍊路壓測具備從用戶端(成功率、錯誤量、輿情等)到伺服器(接口成功率、中間件成功率、水位等)的完整監控體系,避免出現隻關注到服務可用性而忽視用戶端及使用者實際體驗受損的盲區。

在數百個商家全鍊路壓測場景中,消息、開放、小程式是幾個典型的非正常壓測場景,壓測實施難度大,接下來重點介紹一下這幾個場景的全鍊路壓測實踐。

▐ 核心場景1: IM消息體系的端到端全鍊路壓測

傳統服務端壓測通常是http或者tcp類型的短連結壓測,也就是用戶端請求一次,拿到傳回後,連接配接就關閉了。但是這種方式并不适用于IM消息系統的壓測,IM的系統與服務端建立的是長連接配接,使用者A發送消息給使用者B的時候,使用者B是被動收到伺服器的推送,而不是主動拉取資料,這個模式對壓測的實施非常有挑戰。

為了解決這個問題,我們基于NIO開發了手淘和千牛的瘦用戶端,模拟真實使用者與服務端保持長連接配接在服務端,并将部分業務邏輯做了參數化,內建到了瘦用戶端中。比如瘦用戶端在收到消息推送後,回複ACK,表示收到了消息,并且根據已讀比例對該消息進行已讀設定。

長連接配接瘦用戶端

消息鍊路壓測需要模拟用戶端登入後保持長連接配接,目前業内正常壓測工具對消息場景都不适用,需要獨立開發工具。核心方案如下:

開發瘦用戶端內建到壓測引擎中模拟端到端的場景

  • 模拟消息回複
  • 模拟消息已閱讀
  • 模拟消息漫遊

壓測引擎部署到CDN節點上模拟真實使用者收發消息

建立長連接配接模拟使用者真實保持長連接配接線上

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

長連接配接壓測架構圖

全鍊路消息業務打通

消息全鍊路除了包含消息上下行,消息已讀未讀,消息内容模型(文本、卡片、多媒體消息),消息漫遊等基礎消息業務,也在集團二方和合作夥伴三方中衍生出了如機器人智能輔助、訂單核對,修改位址,智能客服等消息業務。

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

消息業務圖

由于消息業務的複雜性,導緻我們在壓測的時候需要協調各個業務方的壓測資料,來調整實際壓測時各業務方的壓力。例如某個賬号開通了A業務也開通了B業務,發送給該賬号的消息走到了兩個業務,導緻流量疊加,最後的壓測結果不準确。為了解決這一問題,我們統一收口了消息業務壓測腳本,通過統一配置設定賬号,通過統一開通業務,統一發起流量等方法,解決了流量疊加互相幹擾以及各業務線腳本無法複用等一系列問題。

▐ 核心場景2: 三方服務商全鍊路壓測

淘系電商業務是一個覆寫消費者、平台、商家、三方服務商的生态鍊路。借助平台開放的接口,三方服務商可以開發出客戶管理、訂單管理、互動營銷等方向的電商支援工具,幫助商家提升營運效率。要實作商家全鍊路保障,就需要驅動并賦能三方服務商一起參與到全鍊路壓測中來。

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

淘系電商生态互動圖

訂單推送全鍊路壓測

在涉及三方的衆多場景中最核心的是訂單場景,訂單推送全鍊路覆寫了消費者在淘寶下單後到收到貨物的整個過程。鍊路涵蓋多個内外部系統,直接關系到消費者的購物體驗,壓測重要性不言而喻。

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

訂單推送全鍊路互動圖

訂單推送全鍊路壓測面臨以下痛點:

  • 服務商數量衆多,沒有統一的壓測工具。
  • 壓測訂單模型構造難度大、準确性差
  • 壓測結果收集困難,資料分析工作量大、标準不統一。

為此我們開發了訂單推送全鍊路壓測平台賦能服務商,平台具有以下特點:

基于曆史訂單資料一鍵生成壓測模型,友善、精準

使用者隻需指定曆史訂單的起止時間,系統會自動分析該時間段内的線上訂單資料,并根據訂單的買家、優惠、商品等資訊模拟生成壓測訂單模型。

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

訂單推送壓測模型

壓測結果資料自動收集、分析,全面、直覺

工具會自動從監控資料中收集相關壓測名額,在報告分析階段跟曆史資料進行比對、根據壓測标準計算出壓測品質分、産出壓測結論、給出優化建議。

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

訂單推送壓測報告生成示意圖

支援Service Mesh技術,生産環境壓測更簡單、安全

壓測平台支援雲原生的Service Mesh技術,對于生産環境壓測改造隻需修改POD節點的相關配置,無需對系統業務代碼進行改造,大大降低生産環境壓測成本,同時減少代碼改造可能帶來的安全風險

▐ 核心場景3:三方小程式壓測

小程式是淘系在APP端開放的重要形式,由于三方小程式內建在手淘、千牛等淘系APP中,其穩定性關系到淘系APP的穩定和使用者體驗。受技術和安全上的限制,三方服務商無法自主對小程式接口進行線上壓測,為此我們開發了小程式壓測平台為服務商夥伴們提供高效、易用的官方壓測工具。

三方小程式壓測平台使用簡單、易上手、自動化程度高,大大降低了技術門檻和服務商的壓測成本,其核心能力如下:

  • 系統根據線上接口流量自動分析、建立、下發壓測任務。
  • 服務商隻需編輯壓測參數,執行壓測任務即可。
  • 壓測通過并送出報告後,系統會根據壓測流量值設定限流保護值。
首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

三方小程式壓測流程圖

此外,我們還組織了頭部核心服務商聯合預演。通過全鍊路壓測,模拟業務峰值流量,演練了各種應急預案和溝通機制,以應對大促中可能出現的異常和突發狀況,形成了壓測、封網、預演的完整保障鍊路:

  • 在全鍊路壓測的同時對核心三方小程式進行壓測,模拟更真實的雙十一環境。
  • 在壓測的同時進行異常情況演練:人工模拟引入問題、故障。
  • 對問題、故障進行緊急處理,演練溝通、協同機制和應急處理流程。

總結

全鍊路壓測期間總計發現130+内部系統問題,大促前所有問題都得到了有效解決。整個大促期間商家業務系統0故障、商家問題回報較往年降低了50%,商家以及消費者感受到了如絲般順滑,捍衛了商家利益與體驗。

一百多家核心的ISV參與了全鍊路壓測驗收,全鍊路壓測幫助商家與生态夥伴重構了系統的高可用基線,使商家在資訊處理和資料處理的水準上,和淘寶拉到同一個水位,使得商家具備了和阿裡一樣的超大規模資料應用能力,幫助商家系統發現并修複上千個性能問題,在效率和能力上大幅度提升商家系統穩定性。

未來我們計劃将在三個方面持續優化,為商家和合作夥伴提供更優質的服務:

1、基于算法能力的智能化壓測。

2、場景、預案、限流、壓測結果等全方位的自動化分析。

3、多元度監控、海量告警資訊的智能分析定位處理。

附1:

鳳凰生态利用JVM-Sandbox提供的統一底層能力,大家奇思妙想産生子產品原子能力生态,提供開放、快速的子產品開發、管理、鑒權、部署能力(魔方平台),通過對子產品能力的組合,衍生出錄制回放、故障注入、強弱依賴梳理、系統Mock、快速問題定位、測試品質評估等上層産品子產品(鳳凰平台2.0),并對各個環節産生的資料、标準能力都開放API和能力,在業務回歸、攻防演練、架構治理等領域輸出方案,緻力于快速、高效的提升系統整體穩定性。

開源位址:

https://github.com/alibaba/jvm-sandbox-repeater?spm=ata.13261165.0.0.11ee30bfW4qEoF

JVM-Sandbox屬于基于Instrumentation的動态編織類的AOP架構,通過精心構造了位元組碼增強邏輯,使得沙箱的子產品能在不違反JDK限制情況下實作對目标應用方法的無侵入運作時AOP攔截。

https://github.com/alibaba/JVM-Sandbox?spm=ata.13261165.0.0.5a094b01By8WRH

淘系技術部-品質團隊-誠招英才

負責保障整個淘寶和天貓主站的業務品質,在這裡有豐富多樣的業務場景和技術挑戰。在這裡你能夠了解世界級雙十一是如何保障的,面對雙十一海量峰值流量,沉澱最具挑戰的大促穩定性保障産品,在這裡可以為過億DAU的互動産品保駕護航,感受行業最複雜的營銷玩法技術魅力,在這裡可以近距離了解目前炙手可熱的内容電商,見識李佳琦、薇娅等是怎樣成為帶貨紅人,在這裡還可以探索大資料驅動下的前線業務和增長政策,在3D、AI、5G等新技術加持下打造一個個電商領域的新賽道。

在這裡你還會和一群優秀的夥伴共事,這裡有對技術的極緻追求,使用業界最前沿的研發技術和理念,創新品質保障的方法、工具和平台,提升研發測試效能,不斷完善使用者體驗,以技術驅動,建構業界領先的品質體系。我們的任何一點優化改進都将使數億使用者受益,期待你的加入,歡迎加入我們一起共同打造淘系的技術品質!聯系方式:[email protected]

關注「淘系技術」微信公衆号,一個有溫度有内容的技術社群~

首次面向B端展開全鍊路壓測!淘系高難度壓測實踐方案公開背景挑戰總結

繼續閱讀