云原生高可用技術(shù)體系的構(gòu)建思路與難點分析

原來單一的技術(shù)環(huán)境開始走向分布式、分層的多組件技術(shù)架構(gòu),越來越多的組件使得保障業(yè)務(wù)穩(wěn)定運行的工作也越來越艱巨。本文從容災(zāi)、容量、線上防護、演練四個維度全方位講解如何構(gòu)建一個真正的高可用體系。
伴隨著互聯(lián)網(wǎng)業(yè)務(wù)的高速發(fā)展,越來越多的線下場景需要轉(zhuǎn)移到線上,而線上業(yè)務(wù)的量級也在飛速增長,給互聯(lián)網(wǎng)業(yè)務(wù)的技術(shù)架構(gòu)帶來了嚴(yán)峻的挑戰(zhàn),原來的“一體機+數(shù)據(jù)庫”的方式已經(jīng)不適用于當(dāng)前的主流業(yè)務(wù),越來越來的業(yè)務(wù)開始向分布式架構(gòu)和云原生架構(gòu)演進。同時,原來單一的技術(shù)環(huán)境開始走向分布式、分層的多組件技術(shù)架構(gòu),越來越多的組件使得保障業(yè)務(wù)穩(wěn)定運行的工作也越來越艱巨。
容災(zāi)
我們可以看看航空系統(tǒng)的容災(zāi)是怎么做的。航空系統(tǒng)的容災(zāi)體系做得非常優(yōu)秀,該系統(tǒng)從人、飛機和環(huán)境三個維度來考慮,才能構(gòu)建一套優(yōu)秀的容災(zāi)方案。
從飛機的維度,每一個航段前,光是一個繞機檢查可能就有幾十個項目需要檢查。機檢查是由地面機務(wù)人員和飛行機組分別完成,同樣也是為了更仔細(xì)的檢查,降低錯誤率。每架飛機還有短期全面檢查和長期全面檢查,飛機上的每一個設(shè)備都是獨立的雙系統(tǒng)在工作。?從環(huán)境的維度,氣象雷達可以讓飛行員感知到幾十甚至幾百海里范圍內(nèi)的天氣情況。飛機防撞系統(tǒng)可以讓飛行導(dǎo)航顯示儀上顯示正在接近的可能存在威脅的飛機。盲降系統(tǒng)是由地面發(fā)射的兩束無線電信號實現(xiàn)航向道和下滑道指引,飛機通過機載接收設(shè)備,進行降落。?從航空業(yè)的容災(zāi)體系構(gòu)建中我們可以發(fā)現(xiàn),容災(zāi)的核心思想是基于隔離的冗余。在系統(tǒng)設(shè)計中,其實也經(jīng)常用到冗余的機制,比如機器經(jīng)常是多臺、數(shù)據(jù)是多備份等。容災(zāi)的評價指標(biāo)主要有兩個:
- RPO(Recovery Point Objective),即數(shù)據(jù)恢復(fù)點目標(biāo),以時間為單位,即在災(zāi)難發(fā)生時,系統(tǒng)和數(shù)據(jù)必須恢復(fù)的時間點要求。
- RTO(Recovery Time Objective),即恢復(fù)時間目標(biāo),以時間為單位,即在災(zāi)難發(fā)生后,信息系統(tǒng)或業(yè)務(wù)功能從停止到必須恢復(fù)的時間要求。RTO標(biāo)志著系統(tǒng)能夠容忍的服務(wù)停止的最長時間,系統(tǒng)服務(wù)的緊迫性要求越高,RTO的值越小。
業(yè)界主流容災(zāi)方案

阿里 AHAS 容災(zāi)方案使用的是比“兩地三中心”更前沿的“異地多活”方案,在所有的數(shù)據(jù)中心都能提供服務(wù)的同時,RPO 和 RTO 能做到分鐘級甚至秒級。下圖是阿里 AHAS 的產(chǎn)品形態(tài)。AHAS 在 2013 年之后就開始大規(guī)模在阿里內(nèi)部使用,并且作為高可用平臺的一個核心模塊,開始服務(wù)外部客戶。AHAS 通過異地多活,能夠真正做到對于宏觀架構(gòu)的容災(zāi),并抵御大規(guī)模的失敗場景。比如一個城市的機房出了故障,可以很輕易地把流量實時切換到另外一個機房。

容量
在互聯(lián)網(wǎng)業(yè)務(wù)下,流量的不確定性非常明顯,經(jīng)常會出現(xiàn)流量高峰事件,比如微博的熱點、阿里的雙 11、12306 的火車票放購等事件。在這種場景下,如何做好容量規(guī)劃就變得至關(guān)重要。
壓測
傳統(tǒng)的壓力測試通常關(guān)注的是性能的好壞,這是一個相對模糊的概念,不需要很精準(zhǔn)。但是在互聯(lián)網(wǎng)的情況下, 我們需要精準(zhǔn)地獲取到一個系統(tǒng)的實時吞吐量,以便更好地應(yīng)對突發(fā)事件。在這種情況下,壓測要盡可能地模擬一個真實的環(huán)境,而不能像以往一樣,在一個特殊的環(huán)境去測試。壓測時在流量規(guī)模、流量模型、系統(tǒng)環(huán)境上都需要一個盡可能真實的環(huán)境,這樣才能精準(zhǔn)做好容量規(guī)劃。?傳統(tǒng)的壓測工具雖然仍在發(fā)揮作用,但是隨著互聯(lián)網(wǎng)的發(fā)展,已經(jīng)越來越不能去適應(yīng)互聯(lián)網(wǎng)技術(shù)的迭代?;ヂ?lián)網(wǎng)的壓測有幾個明顯的特點:
強調(diào)流量的真實性;
壓測規(guī)模要足夠大;
必須簡單易用。
當(dāng)下互聯(lián)網(wǎng)壓測已經(jīng)變成了一個實時的產(chǎn)品,方便進行實時的調(diào)控?;谶@樣的背景,阿里構(gòu)建了基于PTS的流量引擎,大家可以在阿里云上直接使用,其特點如下:
1、 流量真實。流量來源于全國上百城市,覆蓋各運營商(可拓展至海外),真實模擬最終用戶的流量來源,相應(yīng)的報表、數(shù)據(jù)更接近用戶真實體感;發(fā)現(xiàn)端到端更多更全面的問題,壓測即是模擬考。
2、壓測規(guī)模強大,可支持 3kW QPS 。
3、簡單易用,門檻低。復(fù)雜場景的全可視化編排,支持自定義編排能力、指令、控制、函數(shù)等相關(guān)能力,覆蓋 95% 以上的 HTTP 壓測場景,和 JMeter 構(gòu)建能力不相伯仲,同時免去復(fù)雜的理解學(xué)習(xí)成本;除了自身豐富的客戶側(cè)監(jiān)控數(shù)據(jù),還可集成云監(jiān)控和 ARMS 監(jiān)控。壓測過程提供日志明細(xì)查詢,配套有請求瀑布模型,壓測之后的報告和問題定位更方便。結(jié)合 AHAS 可額外提供流量吞吐控制能力、容量水位管理、熔斷降級保護功能。除了強大的自研功能,對于開源 JMeter 的支持也很友好,支持 JMeter 腳本轉(zhuǎn)化為 PTS 壓測,同樣支持原生 JMeter 引擎進行壓測。?全鏈路壓測
在實踐中發(fā)現(xiàn),單系統(tǒng)單應(yīng)用的壓測與真實場景之間的誤差非常大,因為在壓測的時候無法驗證整個系統(tǒng)的方方面面,而且很多問題只有在真正的大流量場景下才會暴露,所以要進行全鏈路壓測,其核心是希望未來的事件能夠提前到在當(dāng)前時間內(nèi)發(fā)生,能夠用最真實的場景來端對端的驗證系統(tǒng)的能力和穩(wěn)定性。?為了實現(xiàn)更好地進行全鏈路壓測,阿里云提出了基于PTS的全鏈路壓測,其架構(gòu)如下圖所示。

壓測環(huán)境:對應(yīng)真實的線上環(huán)境,壓測結(jié)果和問題暴露都是最真實的情況,可通過壓測流量全局識別、透傳(影子表),或者等比隔離環(huán)境,或復(fù)用生產(chǎn)庫(壓測使用測試數(shù)據(jù)),業(yè)務(wù)擋板。壓測基礎(chǔ)數(shù)據(jù):構(gòu)造滿足大促場景的核心基礎(chǔ)相關(guān)數(shù)據(jù)(如買家、賣家、商品信息),以線上數(shù)據(jù)為數(shù)據(jù)源,進行采樣、過濾和脫敏,保持和線上一個量級。壓測流量(模型、數(shù)據(jù)):鏈路范圍、訪問量級、參數(shù)集合、基礎(chǔ)數(shù)據(jù)的特性一起構(gòu)造壓測的業(yè)務(wù)模型,和真實業(yè)務(wù)情況保持一致。流量發(fā)起:模擬全國各地真實的用戶請求訪問,探測站點能力。問題定位:發(fā)起側(cè)多維度的監(jiān)控和報表,服務(wù)端可通過其他生態(tài)產(chǎn)品協(xié)助定位。
線上防護
線上防護對于容災(zāi)體系來說是一個非常重要的環(huán)節(jié)。隨著分布式技術(shù)的應(yīng)用,節(jié)點越來越多,技術(shù)越來越復(fù)雜,出錯的機會也相對增大。同時,在互聯(lián)網(wǎng)的條件下,業(yè)務(wù)的發(fā)布也越來越頻繁,bug 也隨之增多。在互聯(lián)網(wǎng)的環(huán)境下,系統(tǒng)隨時面臨一些不確定事件、流量沖擊等,不能奢望每次出現(xiàn)故障的時候都有人工來干預(yù),而是需要系統(tǒng)自身有一定的防護能力,能夠讓自身在任何環(huán)境下都能有最佳的工作狀態(tài)。
阿里云將流量防護廣泛應(yīng)用于各種場景,比如雙 11 峰值流量、秒殺活動、物流、訂單處理、商品查詢、付款等。同時,阿里云也成功地將流量防護能力融合到了云產(chǎn)品 AHAS(Application High Availability Service,應(yīng)用高可用服務(wù))中。AHAS 涵蓋了阿里巴巴多年來在應(yīng)用高可用服務(wù)領(lǐng)域的技術(shù)沉淀,包括架構(gòu)感知、流量防護、故障演練和功能開關(guān)四大獨立的功能模塊。如下圖所示, AHAS 構(gòu)建了一個從入口到最后端的一個完整的防護體系。

1、如果有性能壓測,可以精準(zhǔn)設(shè)置 QPS 閾值。有了 QPS 閾值,可以用來限流,避免出現(xiàn)超負(fù)載的流量。2、如果沒有性能壓測,也可以通過秒級監(jiān)控,實時設(shè)置閾值。3、支持高階功能:流控模式支持直接、關(guān)聯(lián)、鏈路,流控方式支持快速失敗、Warm Up、排隊等待。?AHAS 針對不同場景的措施——異常隔離
在特定未知的場景下,可能出現(xiàn)不穩(wěn)定的因素,如慢SQL,甚至死鎖,導(dǎo)致整個應(yīng)用越來越慢,甚至整個應(yīng)用沒有響應(yīng),這時候要對異常流量進行隔離,以免影響到正常的流量。?AHAS針對不同場景的措施——系統(tǒng)防護?在某些場景下,比如系統(tǒng)的負(fù)載 CPU 飆升,系統(tǒng)沒有反應(yīng),無法確認(rèn)具體哪個接口導(dǎo)致問題的出現(xiàn),這時 AHAS 提供了一個終極大招:系統(tǒng)保護。系統(tǒng)保護就是當(dāng)系統(tǒng)負(fù)載比較高的時候,會自動根據(jù)入口流量和系統(tǒng)的負(fù)載取得一個動態(tài)的平衡,保證系統(tǒng)不會惡化的同時,也能處理最大的入口請求。在這種情況下,系統(tǒng)對各種流量都是平等的,無法設(shè)置流量的優(yōu)先級。
演練
很多故障是一個小概率事件,但是一旦發(fā)生,所造成的損失是不可估量的,比如巴黎圣母院的火災(zāi)。互聯(lián)網(wǎng)業(yè)務(wù)也是一樣,小概率的故障也可能帶來不可挽回的經(jīng)濟損失,甚至是法律風(fēng)險。因此,故障演練是一個完備的容災(zāi)體系所必需進行的一步。

AHAS故障演練?AHAS故障演練的產(chǎn)品架構(gòu)如下圖所示,其定位是一款簡單、安全、低成本的故障演練工具,能夠幫助用戶快速實施演練并發(fā)現(xiàn)問題。

AHAS故障演練的產(chǎn)品架構(gòu)
從產(chǎn)品角度來講,AHAS故障演練產(chǎn)品有兩個特色:可視化和安全。通過可視化功能可以將演練過程中的系統(tǒng)指標(biāo)直觀展示,可以“邊演練,邊觀察”;另外,AHAS還可以指定保護策略,自動觸發(fā)并終止演練,避免系統(tǒng)因演練而引發(fā)的預(yù)期外故障。

3.?大型網(wǎng)站架構(gòu)演化發(fā)展歷程
8. 深入理解 MySQL:快速學(xué)會分析SQL執(zhí)行效率

掃碼二維碼關(guān)注我
·end·
—如果本文有幫助,請分享到朋友圈吧—
我們一起愉快的玩耍!
你點的每個贊,我都認(rèn)真當(dāng)成了喜歡