1. 程式人生 > 實用技巧 >精準容量、秒級彈性,壓測工具 + SAE 方案如何成功突破傳統大促難關?

精準容量、秒級彈性,壓測工具 + SAE 方案如何成功突破傳統大促難關?

頭圖.jpg

作者 | 代序 阿里云云原生技術團隊

本文整理自《Serverless 技術公開課》,“Serverless”公眾號後臺回覆“入門”,即可獲取系列文章 PPT。

**導讀:**本次課程介紹在 SAE 場景下,如何藉助壓測工具與 SAE 彈效能力來應對大促的實踐。主要包含 3 部分要點:傳統大促面臨的挑戰、SAE 大促方案以及快速壓測驗證。

傳統大促挑戰

1.JPG

一次常見的大促活動,技術人員通常會從下面幾個方面著手,進行準備工作:

  • **架構梳理:**對參與大促的服務,進行系統性的架構梳理;
  • **容量規劃:**結合架構梳理,確定系統 SLA 指標,形成容量模型,幫助業務進行評估;
  • **效能測試:**核心系統的單機容量評估,與核心鏈路全鏈路壓測,可以驗證容量模型,發現系統存在的問題;
  • **應用/資料庫優化:**對發現的系統問題,譬如熱點、死鎖或慢 SQL 等,進行優化,確保系統可以支撐大促;
  • **準備擴容方案:**通過容量規劃與效能測試,可以確定一套滿足活動需求的擴容方案,既保障業務,又降低成本;
  • **應急預案准備:**當遇到突發情況如何應對,譬如業務降級,砍掉非核心邏輯,或者限流降級,保障核心鏈路穩定;
  • **大促線上應急保障:**專人專項,對問題進行響應,執行應急預案。

要完成上述準備工作,經常會遇到如下痛點:

  • **系統核心全鏈路,缺少全域性關係視角。**需要花大量時間,整理依賴關係。
  • **鏈路上下游問題、定位問題比較耗時。**壓測與線上應急保障過程中,彙總鏈路上下游問題,定位問題比較耗時,缺少快速定位分析工具。
  • **業務開發迭代快,需要常態化壓測支援。**大量重複性人力投入,給大家造成很大負擔。
  • **預留資源成本高,需要頻繁擴縮容。**需要產品化支援自動彈性伸縮,降低自建機房等高成本高閒置的固定投入。

SAE 大促解決方案

2.JPG

首先,SAE 是一款面向應用的 Serverless PaaS 平臺,在傳統 PaaS 功能之外,提供了完備的全鏈路監控、微服務管理等能力,並藉助 Serverless 能力,最大程度進行快速擴縮容、降低手工運維成本。

3.JPG

SAE 提供的解決方案,將從三方面入手:

  • **指標視覺化:**藉助應用監控 ARMS 提供豐富的 JVM、全鏈路 Tracing 、慢 SQL 等功能,便捷地評估水位、定位問題;
  • 應用高可用:藉助 AHAS 限流降級能力,流量激增時,保護核心服務,保障可用性不完全跌 0;
  • **效能壓測:**藉助壓測工具如 PTS,模擬單機壓測或全鏈路壓測,驗證容量規劃、發現應用問題。

快速壓測驗證

那麼如何通過 SAE ,進行一次快速的大促壓測驗證呢?下面將進行一次完整的展示:

第一步:觀察應用監控指標,大致擬定彈性/壓測/限流降級

4.JPG

通過觀察應用監控,對日常業務的監控指標,有一個大致的概念。以一個典型的電商類應用為例。

從監控情況看:

  • 該應用為 HTTP 微服務應用;
  • 應用依賴大量 HTTP 微服務呼叫,少量使用 Redis / MySQL 服務,適合使用單機 + 分散式壓測工具,分別進行壓測;
  • QPS 指標,相比 CPU、MEM 和 RT 指標,對業務更敏感,更適合作為彈性策略指標。

第二步:選擇合適的壓測工具

5.JPG

根據業務訴求,可以選擇快速使用的工具,或功能完整的壓測工具。

  • 譬如單機 HTTP 壓測工具 ab、wrk,可以提供簡單快速的壓測方式,但只支援單機、不支援上下文。
  • 如果我們需要支援 WebSocket 、常態化壓測,雲產品 PTS 可以提供較為完整的服務,相比自建成本更低。

第三步:配置 SAE 彈性伸縮策略 + AHAS 限流降級策略

6.JPG

無需精準設定,選擇一些合適的指標,配置 SAE 彈性伸縮策略,或額外配置 AHAS 限流策略 / ARMS 告警。

  • 對 API 型別,可通過對 API QPS、SQL QPS 等指標進行限流,保障超過系統水位的請求,快速 failover,降低對容量內業務的 SLA;並選擇應用監控指標 QPS、RT,配置彈性規則,讓系統進行彈性伸縮;
  • 對於計算型應用,則可選擇更敏感的指標,如 CPU、Memory 對應用進行擴縮容。

第四步:執行壓測 – 觀察結果 – 優化程式碼 – 調整策略配置

7.JPG

1)根據壓測與監控結果,看是否有必要優化程式碼,或調整 SAE 彈性伸縮策略、AHAS 限流策略。
2)執行壓測,檢視壓測結果,發現存在失敗請求。
3)檢視監控異常,發現存在 GC 異常。通過 SAE 控制檯,優化 JVM 引數解決。
4)再次壓測,驗證問題是否解決。
5)如此重複一兩輪,解決其中發現的主要問題,可以更從容地面對大促。

詳細演示過程請點選【視訊課連結】進行觀看。

課程推薦

為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿里巴巴 Serverless 領域技術專家,打造出最適合開發者入門的 Serverless 公開課,讓你即學即用,輕鬆擁抱雲端計算的新正規化——Serverless。點選即可免費觀看課程:https://developer.aliyun.com/learning/roadmap/serverless

Serverless 公眾號,釋出 Serverless 技術最新資訊,彙集 Serverless 技術最全內容,關注 Serverless 趨勢,更關注你落地實踐中的遇到的困惑和問題。