<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4624字,需瀏覽 10分鐘

           ·

          2020-07-22 19:12


          a47fcdbe1dffc99bd3c81ffb729842a2.webp

          作者 | 張軍(游驥),阿里巴巴資深技術(shù)專家

          原來單一的技術(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)方案。

          ?從人的維度,以防萬分之一的緊急情況出現(xiàn)的可能,每年要進行多次的模擬機訓(xùn)練或者實景演練。一架飛機上都會配備至少兩名飛行員,二者相互合作的同時也要相互監(jiān)督。
          從飛機的維度,每一個航段前,光是一個繞機檢查可能就有幾十個項目需要檢查。機檢查是由地面機務(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)方案


          如下圖所示,業(yè)內(nèi)主流的容災(zāi)方案最早是異地冷備的方式,后來演進到同城雙活方式,最后發(fā)展成為“兩地三中心”。


          d4cbf89a26a88ded6a50a84260a0568b.webp

          業(yè)界主流容災(zāi)方案?阿里 AHAS
          阿里 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ī)模的失敗場景。比如一個城市的機房出了故障,可以很輕易地把流量實時切換到另外一個機房。

          d053c46c73240074394ccf7c1a514e70.webp

          AHAS 異地多活的產(chǎn)品形態(tài)?
          容量


          在互聯(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)如下圖所示。


          a70ba13f1de925e72b1637a59f12f21e.webp

          基于PTS的全鏈路壓測?從壓測環(huán)境、壓測基礎(chǔ)數(shù)據(jù)、壓測流量(模型、數(shù)據(jù))、流量發(fā)起和問題定位對基于PTS的全鏈路壓測解決方案總結(jié)如下:
          壓測環(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)。

          ?AHAS流量防護
          阿里云將流量防護廣泛應(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)建了一個從入口到最后端的一個完整的防護體系。


          805ef38a95587f43cc79a861ec1a1c72.webp

          AHAS 經(jīng)典流量防護布局?AHAS針對大流量場景的保護措施?流量防護首先需要考慮的是對大流量場景的保護,比如url、服務(wù)提供方、重點業(yè)務(wù)等,突然出現(xiàn)超乎預(yù)期的大流量,基于AHAS可以做如下防護措施:
          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)體系所必需進行的一步。

          ?企業(yè)為什么需要做故障演練??如果一個業(yè)務(wù)系統(tǒng)的流量很小且趨于穩(wěn)定,就沒有必要進行故障演練。但是如果一個企業(yè)處于高速發(fā)展中,業(yè)務(wù)發(fā)展快,有大量的穩(wěn)定性技術(shù)債,其業(yè)務(wù)系統(tǒng)不斷的變化,甚至今天的形態(tài)跟昨天的形態(tài)都不一致,架構(gòu)也日益復(fù)雜,那么故障演練就是十分必要且必需的。因為每個環(huán)節(jié)的不確定因子都是累積的,如果不進行故障演練,最后一旦發(fā)生故障,極大可能會對系統(tǒng)造成嚴(yán)重破壞。故障演練還可以培養(yǎng)企業(yè)人員的故障處理經(jīng)驗,增強人員的應(yīng)急能力。?企業(yè)引入故障演練遇到的常見問題?在企業(yè)進行故障演練的時候,經(jīng)常會遇到一些問題,比如如何設(shè)計組織架構(gòu),如何選擇技術(shù)方案,如何落地演練實踐等。如果業(yè)務(wù)牽涉到資金,就要做一個清晰化的深層評估,不要因為演練導(dǎo)致出現(xiàn)資金上的虧損,比如在演練中用到的收費內(nèi)容(例如短信等)要考慮周全。?阿里的故障演練方案?如下圖所示,阿里有一套完整的故障演練方案。一開始是通過一些工具或者腳本,在2016年之后才開始將通用的故障模式沉淀為系統(tǒng)。2018年阿里將內(nèi)部沉淀多年的實踐正式在阿里云商用,2019年將沉淀多年的故障注入場景正式開源,成為國內(nèi)首個混沌工程開源產(chǎn)品。

          88b57ca7c3099a1b9718533bdb46fbc0.webp

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

          a7758611b8cb8996e19b0174b2cf2858.webp

          AHAS故障演練的產(chǎn)品架構(gòu)


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


          57ee6a970bb50b67a587c7857c1ef14e.webp

          1.?人人都能看懂的 6 種限流實現(xiàn)方案!

          2.?一個空格引發(fā)的“慘案“

          3.?大型網(wǎng)站架構(gòu)演化發(fā)展歷程

          4.?Java語言“坑爹”排行榜TOP 10

          5. 我是一個Java類(附帶精彩吐槽)

          6. 看完這篇Redis緩存三大問題,保你能和面試官互扯

          7. 程序員必知的 89 個操作系統(tǒng)核心概念

          8. 深入理解 MySQL:快速學(xué)會分析SQL執(zhí)行效率

          9. API 接口設(shè)計規(guī)范

          10. Spring Boot 面試,一個問題就干趴下了!



          a9220e3b5b4ab3b640f91e24063312a2.webp

          掃碼二維碼關(guān)注我


          ·end·

          —如果本文有幫助,請分享到朋友圈吧—

          我們一起愉快的玩耍!



          04bf3c7f8121f3edfebb58b02c45e728.webp你點的每個贊,我都認(rèn)真當(dāng)成了喜歡
          瀏覽 30
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷资源| 中文字幕自拍 | 天天插一插 | 欧美日韩一级黄片 | 一级免费黄色视频 |