
阿裡妹導讀:
在這場抗擊新型冠狀肺炎的戰役中,普通人能做些什麼呢?可能「宅」是現在大多數人能作出的重要貢獻之一。在這些深「宅」時光裡,用手機或電腦打打遊戲、追追劇成了很多人暫時忘掉現實的「良藥」。可是!正要上分的遊戲突然崩了,正演到關鍵的劇情突然挂掉,最近“某某 app 崩了”帶着廣大網友都能領悟的痛頻上熱搜。網友紛紛呼喚程式員小哥哥快上班,其實疫情期間線上流量激增,很多線上應用都面臨着巨大挑戰……要解決高流量和突發流量這種業務沖擊下,線上應用頻繁崩潰的問題,首先需要審視企業目前 IT 架構是否能支撐未來的業務發展
阿裡巴巴在多年 雙11 高并發,高可用和高客戶體驗要求背景下積累了相應的技術體系,并賦能羅輯思維等客戶,幫助他們落地全鍊路壓測。本文整理自高使用者、突發高流量場景下的真實案例,公布阿裡在高可用架建構設過程中的實踐筆記,期待幫助更多企業從容應對接下來的高流量場景。
你的應用為什麼崩了?
非常複雜的服務端
在我們的日常生活中因為 app 側相對穩定,“崩”一般發生在看不見摸不着的“服務端”(或者叫雲端),而這個服務端有多複雜?
以一個較為成熟的雲上架構為例,光是阿裡雲中建構一個線上服務可以用到的雲計算基礎、安全和企業應用三個分類的雲産品數量就達到幾乎 200 款。而我們從用戶端(App/PC)到達服務端會涉及到的關鍵節點就有 CDN、動态加速、高防、應用防火牆、4/7 層負載均衡、前後端服務集、緩存、資料庫存儲、中間件、基礎設施層等等,整個鍊路都面臨着不确定性,比如負載均衡中影響流量的産品規格就有 5 個,後端服務的服務規模化問題更是複雜和難以評估檢驗,這其中任何一個節點出問題都會導緻服務不可用,給最終使用者一個“崩”的感覺。同樣的問題在專有雲、混合雲和自建 IDC 都有。
如何能有效的全面檢驗服務端吞吐能力、發現所有問題甚至是做好容量規劃,具備對峰值的流控排程能力是所有企業都需要思考和應對的。
沒有提前規劃的服務能力
如果應用沒有對自己的服務能力進行提前規劃,沒有提前做好關鍵節點的規劃,對線上的應急措施如彈性擴容,線上防護,熔斷降級等都不具備,在面對業務突發時,就很難保證核心接口能夠穩定對外服務。一旦,出現應用“崩了”的情況下,很多企業無法采取正确的手段,匆匆擴容非但不能解決問題,反而帶來更多不可預期的問題,導緻“崩了”進一步的惡化。
除去因問題發現、容量規劃、流控和熔斷降級引起的“崩”外,運維态的隐患問題如故障影響面、配置一緻性、監控和根因分析相關工具、複雜的人員組織的高可用程度等,如果沒有足夠的演練和驗證方案,一樣會在關鍵時刻讓你的應用出現“崩”的情況。
阿裡巴巴工程師的高可用架建構設筆記
下面我們将阿裡巴巴工程師在高可用架建構設實踐中,積累的真實經驗以筆記的形式分享給大家。
架構設計
首先要實作架構可視化。利用 AHAS 的架構感覺可以全面了解雲上系統架構,以可視化的方式直覺呈現雲資源、容器和應用間分層依賴關系。伺服器、存儲、網絡是現代雲平台的基礎設施。随着上雲戰略的推進,越來越多的企業将業務、服務、系統建構在雲平台上。
開源軟體和雲服務的多樣性,開發語言的異構性,以及企業 IT 團隊的組織和能力差異,都提高了标準化的複雜性。架構感覺功能應運而生,通過采集和分析作業系統及第三方标準接口,捕捉程序級的調用關系,并使用特征庫算法識别程序所使用的技術元件,最後在伺服器、容器和程序這三個次元上以可視化的方式展示應用架構,給使用者一張全面清晰的雲上架構地圖。圍繞這張基礎的視圖,會持續衍生出雲資源、容器和應用架構多元度的架構視圖,還有搬站、重構梳理和資産管理等場景化的視圖,真正做到CMDB可視化,驅動問題發現助推業務增長,釋放雲上的更多元度的紅利。
而關于強弱依賴治理,因為強依賴本身意味着一榮俱榮,一損俱損。結合 AHAS SDK 的引入和預埋,一旦當平台最大吞吐能力到達瓶頸時,除了入口或者web類應用的業務峰值流量限流可以起到第一層的保護作用外,還可以将預先标記為弱依賴的服務平滑下線,進而達到節省更多資源保障核心計算能力的目的,同時還可以去除非核心對核心服務的影響,最終通過合理高效的服務降級最大程度獲得業務和成本的平衡。而使用了AHAS SDK之後在編碼時,隻需要關心如何定義資源,即哪些方法/代碼塊需要保護,而不需要關注如何保護這個資源。然後通過添加規則來保護資源,規則添加即時生效。
容量規劃
外網仿真壓測:首先可以通過 PTS 高效快速建構同模型和量級的業務流量,對于開源主流的 JMeter 腳本可以直接 100%相容,對于沒有現成腳本的情況可以使用PTS自研的可視化互動進行0編碼編排,編排完成後從公網的各地域營運商發起,真實模拟特定業務場景下的外網流量,進而全面驗證和探測雲上或雲下整體架構(從網絡接入到應用服務内再到存儲層和基礎設施)的瓶頸和問題。
全鍊路壓測:更進一步的,如果在生産環境想直接精準衡量業務容量的情況,可以通過 PTS 相關解決方案使生産環境具備壓測流量識别和路由到指定影子存儲區域的能力,結合相關影子存儲區域的準備,然後做到同樣規模基礎資料上的業務流量壓測同樣的生産環境,最終達到精準衡量線上生産環境的能力,當然,對于壓測流水資料由于已經隔離開,是以可以友善安全的清理和維護。
業務監控
面對複雜的應用環境和高速增長的業務,ARMS 能幫助使用者快速建構各種環境下完整的監控體系,實作從頁面到資料庫、從應用性能到基礎架構資源、從 IT 到業務的端到端監控。減少故障排查時間,降低跨部門溝通成本,最終降低因為故障和體驗差給企業帶來的損失。
線上管控
于運作态或已有應用可以通過 AHAS 探針形态(除AHAS SDK外更輕的方案)在不修改代碼的情況下進行業務洪峰的流量強力控制、消息場景的削峰填谷,而對于結構複雜的可以将系統内或外不穩定的因素迅速降級讓業務保持穩定,同時還有單機過載保護(根據 RT 動态調節入口流量)的兜底能力,甚至很多時候系統來不及壓測或者不知道配置什麼規則的時候單機智能過載保護是個很好的功能和方法。以上都在運作态和運維側即可完成引入和控制。對于線上配置項和業務屬性值通過 AHAS 開關子產品的輕量級方案進行安全和統一管控,這部分能力即将開放,敬請期待。
日常巡檢
風險的提前暴露,通過 Advisor 智能顧問對雲上主要雲資源進行全面的巡檢和風險識别,規則都來自于阿裡雲一線TAM同學面向客戶的技術體系積累及阿裡生态内 SRE 最佳實踐的融合。基于前述的架構地圖和使用者的輸入,可進行更深層次的應用/業務架構層面的巡檢和建議。
常态化演練
AHAS 的故障演練子產品遵循混沌工程實驗原理并融合了阿裡巴巴内部實踐的經驗,基于此使用者可以建立流程完整而且可視化程度很高的故障演練體系,可友善的對基礎資源、應用服務、容器服務和雲平台4層進行超多元度的編排和定制,同時産品還提供了豐富的成熟故障經驗庫。進而幫助使用者實作包括架構、業務、人員的全面高可用提升。故障演練在依賴治理、業務連續性提升和故障修複驗證等場景中都有巨大作用。
工具一覽表
1、應用高可用服務 AHAS
專注于提高應用高可用能力的雲工具産品,提供應用架構自動探測,故障注入式高可用能力評測和一鍵流控降級等功能,可以快速低成本的提升應用可用性。
https://www.aliyun.com/product/ahas2、性能測試 PTS
面向所有技術背景人員的雲化測試工具。有别于傳統工具的繁複,PTS以網際網路化的互動,提供性能測試、API調試和監測等多種能力。自研和适配開源的功能都可以輕松模拟任意體量的使用者通路業務的場景,任務随時發起,免去繁瑣的搭建和維護成本。更是緊密結合監控、流控等兄弟産品提供一站式高可用能力,高效檢驗和管理業務性能。
https://www.aliyun.com/product/pts3、智能顧問Advisor
智能顧問 Advisor 根據使用者情況,結合阿裡雲長期以來的客戶側最佳實踐,基于TAM(Technical Account Management)服務體系的核心基礎能力,全方位地為使用者提供雲資源、應用架構、業務性能及安全上的診斷和優化建議。現在,越來越多的阿裡雲雲原生客戶可以通過 Advisor 便捷地享受專業的 TAM基 礎服務,更好地用好雲。同時,我們也會圍繞 Advisor 為有相關需求的客戶提供專項深度的 TAM 服務。
https://www.aliyun.com/product/advisor4、企業級高可用架構解決方案
脫胎于阿裡巴巴電商業務下的高可用技術體系經過所有的雙11流量洪峰考驗、日常穩定性考驗,已經服務于阿裡全生态并開始服務外部的企業客戶,解決方案為企業提供的包括營銷活動支撐、整體成本控制(全鍊路壓測、容量規劃、流量控制、排程)、應急應對能力(開關和預案)、容災逃逸能力(架構感覺、故障演練、異地多活、單元化)。
https://www.aliyun.com/solution/ehasl5、混沌測試工具 ChaosBlade
ChaosBlade 是一款遵循混沌工程實驗原理,建立在阿裡巴巴近十年故障測試和演練實踐基礎上,并結合了集團各業務的最佳創意和實踐,提供豐富故障場景實作,幫助分布式系統提升容錯性和可恢複性的混沌工程工具。
https://github.com/chaosblade-io/chaosblade6、輕量級流量控制架構 sentinel
以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個次元來幫助您保護服務的穩定性。