做者 | 代序 阿里云云原生技術團隊數據庫
本文整理自《Serverless 技術公開課》,「Serverless」公衆號後臺回覆「入門」,便可獲取系列文章 PPT。架構
導讀:本次課程介紹在 SAE 場景下,如何藉助壓測工具與 SAE 彈性能力來應對大促的實踐。主要包含 3 部分要點:傳統大促面臨的挑戰、SAE 大促方案以及快速壓測驗證。
傳統大促挑戰
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
一次常見的大促活動,技術人員一般會從下面幾個方面着手,進行準備工做:less
- 架構梳理:對參與大促的服務,進行系統性的架構梳理;
- 容量規劃:結合架構梳理,肯定系統 SLA 指標,造成容量模型,幫助業務進行評估;
- 性能測試:核心系統的單機容量評估,與核心鏈路全鏈路壓測,能夠驗證容量模型,發現系統存在的問題;
- 應用/數據庫優化:對發現的系統問題,譬如熱點、死鎖或慢 SQL 等,進行優化,確保系統能夠支撐大促;
- 準備擴容方案:經過容量規劃與性能測試,能夠肯定一套知足活動需求的擴容方案,既保障業務,又下降成本;
- 應急預案准備:當遇到突發狀況如何應對,譬如業務降級,砍掉非核心邏輯,或者限流降級,保障核心鏈路穩定;
- 大促在線應急保障:專人專項,對問題進行響應,執行應急預案。
要完成上述準備工做,常常會遇到以下痛點:運維
- 系統核心全鏈路,缺乏全局關係視角。須要花大量時間,整理依賴關係。
- 鏈路上下游問題、定位問題比較耗時。壓測與在線應急保障過程當中,彙總鏈路上下游問題,定位問題比較耗時,缺乏快速定位分析工具。
- 業務開發迭代快,須要常態化壓測支持。大量重複性人力投入,給你們形成很大負擔。
- 預留資源成本高,須要頻繁擴縮容。須要產品化支持自動彈性伸縮,下降自建機房等高成本高閒置的固定投入。
SAE 大促解決方案
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
首先,SAE 是一款面向應用的 Serverless PaaS 平臺,在傳統 PaaS 功能以外,提供了完備的全鏈路監控、微服務管理等能力,並藉助 Serverless 能力,最大程度進行快速擴縮容、下降手工運維成本。 分佈式
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
SAE 提供的解決方案,將從三方面入手:微服務
- 指標可視化:藉助應用監控 ARMS 提供豐富的 JVM、全鏈路 Tracing 、慢 SQL 等功能,便捷地評估水位、定位問題;
- 應用高可用:藉助 AHAS 限流降級能力,流量激增時,保護核心服務,保障可用性不徹底跌 0;
- 性能壓測:藉助壓測工具如 PTS,模擬單機壓測或全鏈路壓測,驗證容量規劃、發現應用問題。
快速壓測驗證
那麼如何經過 SAE ,進行一次快速的大促壓測驗證呢?下面將進行一次完整的展現:工具
第一步:觀察應用監控指標,大體擬定彈性/壓測/限流降級
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
經過觀察應用監控,對平常業務的監控指標,有一個大體的概念。以一個典型的電商類應用爲例。性能
從監控狀況看:測試
- 該應用爲 HTTP 微服務應用;
- 應用依賴大量 HTTP 微服務調用,少許使用 Redis / MySQL 服務,適合使用單機 + 分佈式壓測工具,分別進行壓測;
- QPS 指標,相比 CPU、MEM 和 RT 指標,對業務更敏感,更適合做爲彈性策略指標。
第二步:選擇合適的壓測工具
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
根據業務訴求,能夠選擇快速使用的工具,或功能完整的壓測工具。優化
- 譬如單機 HTTP 壓測工具 ab、wrk,能夠提供簡單快速的壓測方式,但只支持單機、不支持上下文。
- 若是咱們須要支持 WebSocket 、常態化壓測,雲產品 PTS 能夠提供較爲完整的服務,相比自建成本更低。
第三步:配置 SAE 彈性伸縮策略 + AHAS 限流降級策略
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
無需精準設置,選擇一些合適的指標,配置 SAE 彈性伸縮策略,或額外配置 AHAS 限流策略 / ARMS 告警。
- 對 API 類型,可經過對 API QPS、SQL QPS 等指標進行限流,保障超過系統水位的請求,快速 failover,下降對容量內業務的 SLA;並選擇應用監控指標 QPS、RT,配置彈性規則,讓系統進行彈性伸縮;
- 對於計算型應用,則可選擇更敏感的指標,如 CPU、Memory 對應用進行擴縮容。
第四步:執行壓測 – 觀察結果 – 優化代碼 – 調整策略配置
![圖片描述 圖片描述](http://static.javashuo.com/static/loading.gif)
1)根據壓測與監控結果,看是否有必要優化代碼,或調整 SAE 彈性伸縮策略、AHAS 限流策略。 2)執行壓測,查看壓測結果,發現存在失敗請求。 3)查看監控異常,發現存在 GC 異常。經過 SAE 控制檯,優化 JVM 參數解決。 4)再次壓測,驗證問題是否解決。 5)如此重複一兩輪,解決其中發現的主要問題,能夠更從容地面對大促。
詳細演示過程請點擊【視頻課連接】進行觀看。
課程推薦
爲了更多開發者可以享受到 Serverless 帶來的紅利,這一次,咱們集結了 10+ 位阿里巴巴 Serverless 領域技術專家,打造出最適合開發者入門的 Serverless 公開課,讓你即學即用,輕鬆擁抱雲計算的新範式——Serverless。
點擊便可免費觀看課程:https://developer.aliyun.com/learning/roadmap/serverless