技術文章 | 系統穩定性保障核武器——全鏈路壓測
為什麽要做全鏈路壓測?
對阿裏巴巴而言,每年最重要的一天莫過於雙11。這是因為在雙11的零點,系統會遭遇史無前例的巨大洪峰流量沖擊,保證雙11當天系統的穩定性對高可用團隊來說是巨大的挑戰。在這個挑戰中會有很多不確定因素,大致分為兩方面:
- 技術架構帶來的不確定性,阿裏在08年開始對系統進行拆分,由原有的單一系統拆分成了分布式架構,包括CDN、網關、負載均衡、分布式頁面系統等,整體的技術生態十分豐富。分布式環境任意環節出了問題都可能會對系統造成影響;
- 業務發展帶來的不確定性,系統的可用性隨著業務增長,面臨更嚴峻的挑戰和不確定性。
不確定性帶來的系統可用性問題
這些不確定性背後的因素多種多樣,既涉及系統容量、業務性能,又涉及基礎設施瓶頸、中間件瓶頸和系統之間的依賴影響,並且眾多因素缺乏有效的驗證手段。事實上,阿裏從10年開始就在嘗試去解決雙11零點的穩定性問題。
線上單機與單系統壓測
最初采用的方式是在線上單機的生產環境的壓力測試和容量規劃,
主要采用了四種方式:第一在開始階段模擬調用者,其中在生產環境中只能模擬只讀請求,對寫請求需要特定的處理;第二種方式是采用流量錄制和回放的方式做壓力測試,通過將錄制的流量快速率回放對單臺機器進行壓測,獲取單臺機器的服務能力;後兩種是從流量分配的角度出發,分別是請求流量轉發和改變負載均衡的權重,兩者核心思想都是將流量集中到某臺機器上。
通過上述機制和手段,能夠準確探測到單臺機器的服務能力。基於單臺服務能力和預估即將到來的業務流量進行容量規劃,確定所需服務器的數目,這種做法伴隨著阿裏度過了10、11、12三年的雙11零點穩定性的考驗。
單系統壓測的問題
但10和11年雙11零點由於流量過大暴露了不少問題,讓我們意識到單個系統ready不代表全局ready,究其根本原因在於系統之間相互關聯和依賴調用之間相互影響。在做單個系統的容量規劃時,所有的依賴環節能力是無限的,進而使得我們獲取的單機能力值是偏樂觀的;同時,采用單系統規劃時,無法保證所有系統均一步到位,大多數精力都集中核心少數核心系統;此外,部門問題只有在真正大流量下才會暴露,比如網絡帶寬等等。
>>>展開全文
技術文章 | 系統穩定性保障核武器——全鏈路壓測