天天看點

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

全鍊路壓測?

基于實際的生産業務場景和系統環境,模拟海量的使用者請求和資料,對整個業務鍊路進行各種場景的測試驗證,持續發現并進行瓶頸調優,保障系統穩定性的一個技術工程。

針對業務場景越發複雜化、海量資料沖擊,發現并解決整個業務系統的可用性、擴充性以及容錯性的過程。

核心流程

全鍊路壓測實施的核心流程如下:

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

1 全鍊路壓測的意義

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

​ 上圖是 2012 年淘寶核心業務應用關系的拓撲圖,還不包含了其他的非核心業務應用,所謂的核心業務就是和交易相關的,和錢相關的業務。這張圖大家可能看不清楚,看不清楚才是正常的,因為當時的阿裡應用數量之多、應用間關系之混亂靠人工确實已經無法理清楚了。

​ 在真實的業務場景種,每個系統的壓力都比較大,而系統之間是有互相依賴關系的,單機壓測沒有考慮到依賴環節壓力都比較大的情況,會引入一個不确定的誤差。這就好比,我們要生産一個儀表,每一個零件都經過了嚴密的測試,最終把零件組裝成一個儀表,儀表的工作狀态會是什麼樣的并不清楚。

技術角度:降低成本、提高服務可用性、技術練兵&團隊協作&快速響應;

業務角度:提升使用者體驗、技術更好的服務業務、創造更多業務價值。

2 鍊路壓測方案刨析

2.1 線下壓測

​ 顧名思義就是在測試環境進行壓測,且是針對一些重點項目這種測試手段,因為測試環境硬體資源以及壓測資料與線上差别太大并且服務間依賴關系錯綜複雜,測試環境很難模拟且不夠穩定,壓測出來的資料名額參考價值不大,難以用測試環境得出的結果推導生産真實容量。

2.2 預生産環境壓測

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

​ 這個一般是将生成環境的硬體以及軟體同步複制到與生産環境一份,然後對服務内部的外部調用接口進行攔截,然後進行壓測這樣可以評估出來生産環境的真實容量以及達到壓測的目的,但是成本非常高,需要将生産環境的硬體完全的複制一份,并未維護成本非常高,部署的時候需要同步的在預生産環境進行部署,以及壓測代碼的更改。

2.3 引流壓測

​ 随着業務量的不斷增長,考慮到線下測試結果的準确性,開始嘗試生産壓測,這種壓測手段,我們稱之為引流壓測。事實上沒有真正的模拟放大壓力進行測試,而是一種通過縮小線上服務叢集數的方式來放大單機處理量。比如一個業務系統的叢集有100個節點,将其中90個節點模拟下線或轉發流量到剩餘的10個節點上實施壓測。

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

​ 引流壓測的弊端在于,DB承受壓力不變,上下遊系統的壓力不變。壓測結果僅能代表單個應用的性能,但往往無法識别鍊路和架構級的隐患,而且在引流過程中倘若出現異常或突如其來的業務高峰,很容易造成生産故障。

2.4 全鍊路壓測

​ 随着微服務架構的流行,服務按照不同的次元進行拆分,一次請求往往需要涉及到多個服務。網際網路應用建構在不同的軟體子產品集上,這些軟體子產品,有可能是由不同的團隊開發、可能使用不同的程式設計語言來實作、有可能布在了幾千台伺服器,橫跨多個不同的資料中心。是以,就需要一些可以幫助了解系統行為、用于分析性能問題的工具,以便發生故障的時候,能夠快速定位和解決問題,但是他的缺點也很明顯就是需要的技術難度很高,需要克服流量染色,資料隔離,日志隔離,風險熔斷等技術難題,因位在生産環境壓測,是以控制不好風險也是非常高的。

​ 是以,在複雜的微服務架構系統中,幾乎每一個前端請求都會形成一個複雜的分布式服務調用鍊路。一個請求完整調用鍊可能如下圖所示:

大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

2.5 四種壓測方案對比

壓測效果 技術難度 機器成本 維護成本 風險
線下壓測
預生産壓測
引流壓測
全鍊路壓測

3. 全鍊路壓測概述

3.1 什麼是全鍊路壓測

​ 基于實際的生産業務場景、生産環境,模拟海量的使用者請求和資料對整個業務鍊(通常是核心業務鍊)進行壓力測試,并持續調優的過程。

3.2 解決什麼問題

​ 解決在業務場景越發複雜化、海量資料沖擊下系統整個業務鍊的可用性、服務能力的瓶頸,以及容量規劃等問題。

3.2.3 精确的容量規劃

3.2.3.1 為什麼需要容量規劃

什麼時候增減機器、保障系統穩定性、節約成本

​ 容量規劃的目的在于讓每一個業務系統能夠清晰地知道:什麼時候該加機器、什麼時候應該減機器?雙11等大促場景需要準備多少機器,既能保障系統穩定性、又能節約成本

3.2.3.2 容量規劃四步走

  1. 業務流量預估階段:通過曆史資料分析未來某一個時間點業務的通路量會有多大
  2. 系統容量評估階段:初步計算每一個系統需要配置設定多少機器
  3. 容量的精調階段:通過全鍊路壓測來模拟大促時刻的使用者行為,在驗證站點能力的同時對整個站點的容量水位進行精細調整
  4. 流量控制階段:對系統配置限流門檻值等系統保護措施,防止實際的業務流量超過預估業務流量的情況下,系統無法提供正常服務流量控制階段:對系統配置限流門檻值等系統保護措施,防止實際的業務流量超過預估業務流量的情況下,系統無法提供正常服務
3.3 進行全鍊路的性能監控
全鍊路性能監控 從整體次元到局部次元展示各項名額,将跨應用的所有調用鍊性能資訊集中展現,可友善度量整體和局部性能,并且友善找到故障産生的源頭,生産上可極大縮短故障排除時間。
  • 保證系統穩定性:可能提前預估系統存在的各種問題,提前模拟高并發場景,有備無患。
  • 請求鍊路追蹤,故障快速定位:可以通過調用鍊結合業務日志快速定位錯誤資訊。
  • 精準的容量評估:能夠定位到最需要擴容的服務,幫助公司用最低的成本滿足業務的性能要求
  • 真實的性能驗證:能夠在生成環境以最真實的環境來驗證系統的真實性能。
  • 資料分析,優化鍊路:可以得到使用者的行為路徑,彙總分析應用在很多業務場景。
大廠鐘愛的全鍊路壓測有什麼意義?四種壓測方案詳細對比分析

3.4 如何展開全鍊路壓測

3.4.1 業務模型梳理
  • 首先應該将核心業務和非核心業務進行拆分,确認流量高峰針對的是哪些業務場景和子產品,針對性的進行擴容準備。
  • 梳理出對外的接口:使用MOCK(模拟)方式做擋闆。
  • 千萬不要污染正常資料:認真梳理資料處理的每一個環節,確定 mock 資料的處理結果不會寫入到正常庫裡面
3.4.2 資料模型建構
  • 資料的真實性和可用性:可以從生産環境完全移植一份當量的資料包,作為壓測的基礎資料,然後基于基礎資料,通過分析曆史資料增長趨勢,預估目前可能的資料量
  • 資料隔離:千萬千萬不要污染正常資料:認真梳理資料處理的每一個環節,可以考慮通過壓測資料隔離處理,落入影子庫,mock 對象等手段,來防止資料污染
3.4.3 壓測工具選型

務子產品介紹