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