<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>

          微服務(wù)架構(gòu)之雪崩效應(yīng)

          共 2099字,需瀏覽 5分鐘

           ·

          2022-01-05 00:10


          ? ?

          一、概述

          二、原因

          三、解決方案

          四、總結(jié)





          概述




          密碼學(xué)中,雪崩效應(yīng)avalanche effect指加密算法(尤其是塊密碼加密散列函數(shù))的一種理想屬性。雪崩效應(yīng)是指當(dāng)輸入發(fā)生最微小的改變(例如,反轉(zhuǎn)一個(gè)二進(jìn)制位)時(shí),也會導(dǎo)致輸出的不可區(qū)分性改變(輸出中每個(gè)二進(jìn)制位有50%的概率發(fā)生反轉(zhuǎn))。合格塊密碼中,無論密鑰明文的任何細(xì)微變化都必須引起密文的不可區(qū)分性改變。該術(shù)語最早由Horst Feistel使用,[1]盡管其概念最早可以追溯到克勞德·香農(nóng)提出的擴(kuò)散(diffusion)。


          - 維基百科


          那么,在微服務(wù)體系中,雪崩效應(yīng)又指的是什么呢?

          在微服務(wù)系統(tǒng)中,整個(gè)系統(tǒng)是以一系列固有功能的微服務(wù)組成,如果某一個(gè)服務(wù),因?yàn)榱髁慨惓;蛘咂渌?,?dǎo)致響應(yīng)異常,那么同樣的也會影響到調(diào)用該服務(wù)的其他服務(wù),從而引起了一系列連鎖反應(yīng),最終導(dǎo)致整個(gè)系統(tǒng)崩潰。

          如上圖所示,服務(wù)A、B、C串行調(diào)用,如果在某一時(shí)刻,ServerC出現(xiàn)異常,且暫時(shí)沒有恢復(fù),那么逐漸的,ServerB和ServerA也會出現(xiàn)異常,從而使得整個(gè)調(diào)用鏈異常,不能正常提供服務(wù)。


          原因


          常見的原因如下:

          • 流量突增

            節(jié)假日訪問量變大,常見于工具類APP,如美圖秀秀

            活動(dòng)原因?qū)е略L問量變大

          • 程序bug

            內(nèi)存泄漏

            線程池中的線程使用之后未釋放等

          • 硬件或者網(wǎng)絡(luò)異常

            機(jī)器硬盤故障

            所在的網(wǎng)段發(fā)生異常

          • 同步等待

            因?yàn)槌绦蛟O(shè)計(jì)原因,整個(gè)請求都在同步進(jìn)行,后面的請求只有在前面的請求完成之后,才能被執(zhí)行

          • 緩存擊穿

            常見于秒殺系統(tǒng)或者熱門事件,短時(shí)間內(nèi)大量緩存失效時(shí)大量的緩存不命中,使請求直擊后端,造成服務(wù)提供者超負(fù)荷運(yùn)行,引起服務(wù)不可用。

          在正常情況下,整個(gè)微服務(wù)系統(tǒng)運(yùn)行正常(以綠色表示),如下圖所示:

          在某一時(shí)刻,serverE出現(xiàn)了異常,如下圖所示:

          因?yàn)榉?wù)E的異常,導(dǎo)致serverD在接收和處理請求上面也出現(xiàn)了異常,如下圖:

          久而久之,因?yàn)閟erverD的異常,也影響了serverA、serverB和serverC。也就是說因?yàn)閟erverE的異常,間接影響了serverA、serverB、serverC和serverD,從而整個(gè)系統(tǒng)出現(xiàn)了崩潰,這就是所謂的雪崩效應(yīng)。




          解決方案




          微服務(wù)系統(tǒng),是一個(gè)復(fù)雜的系統(tǒng),呈網(wǎng)狀調(diào)用結(jié)構(gòu),其每個(gè)微服務(wù)的實(shí)例成百上千,很難或者不可能去完全避免某個(gè)實(shí)例出現(xiàn)異常,這就使得異常在某個(gè)特定情況或者特定壓力下才會出現(xiàn),那么避免雪崩效應(yīng),除了要求開發(fā)人員有扎實(shí)的開發(fā)功底外,還得需要依賴其他方式來有效的進(jìn)行避免或者應(yīng)對雪崩效應(yīng)。

          01限流

          通過限制調(diào)用端的流量數(shù)來達(dá)到限流的目的。比如控制實(shí)例每秒鐘的處理請求量,即控制QPS。常見的QPS控制方法有令牌桶算法,如下圖所示(圖片來自于網(wǎng)絡(luò))

          02熔斷

          在調(diào)用端即上游服務(wù)控制對下游服務(wù)的熔斷功能,在上游服務(wù)中,如果發(fā)現(xiàn)下游服務(wù)在一定時(shí)間內(nèi),其超時(shí)率達(dá)到了某個(gè)閾值,則開啟熔斷機(jī)制,即不對下游服務(wù)進(jìn)行調(diào)用,或者只進(jìn)行一定比例的調(diào)用,而對于剩下的流量,則直接返回空響應(yīng)或者返回默認(rèn)響應(yīng)。

          03降級

          分為服務(wù)內(nèi)降級和服務(wù)外降級兩種。

          服務(wù)內(nèi)降級:指的是當(dāng)本服務(wù)響應(yīng)比較慢的時(shí)候,主動(dòng)停掉本服務(wù)內(nèi)一些不重要的業(yè)務(wù),從而釋放機(jī)器資源給重要的業(yè)務(wù)。

          服務(wù)外降級:當(dāng)下游服務(wù)響應(yīng)慢或者無響應(yīng)的時(shí)候,上游服務(wù)主動(dòng)調(diào)用備用邏輯,停掉對下游服務(wù)的調(diào)用。

          如下圖所示,當(dāng)serverD異常的時(shí)候,斷開serverA對serverD的調(diào)用。

          04擴(kuò)容

          在流量突增的時(shí)候,微服務(wù)系統(tǒng)內(nèi)某個(gè)實(shí)例因?yàn)闄C(jī)器資源或者別的原因,響應(yīng)比較慢,這就是需要對該實(shí)例進(jìn)行臨時(shí)擴(kuò)容,現(xiàn)在擴(kuò)容方案比較成熟,比如docker方式等等,具體依賴于服務(wù)的實(shí)際部署方式,此處不再贅述。

          05增加Cache

          對下游服務(wù)正常響應(yīng)的數(shù)據(jù)進(jìn)行緩存,之后一段時(shí)間內(nèi)直接向上游返回緩存中的數(shù)據(jù)。這樣可以有效降低對下游服務(wù)質(zhì)量的敏感度,在一定程度上提升服務(wù)的穩(wěn)定性。

          06流量控制

          評估服務(wù)的最大并發(fā),在上線之前,先對服務(wù)進(jìn)行壓測,了解其性能以及QPS等,無論程序是同步還是異步,用戶都可以通過?最大QPS * 非擁塞時(shí)的延時(shí)(秒)來評估最大并發(fā),原理見little's law。



          總結(jié)


          雪崩效應(yīng),在微服務(wù)系統(tǒng)中,是一個(gè)很常見的現(xiàn)象,對于其解決或者避免方式,每個(gè)開發(fā)人員的理解見仁見智,但方案無非就是以上幾種,具體使用哪種,則依賴于具體的場景。

          比如,筆者從業(yè)于某互聯(lián)網(wǎng)公司的廣告相關(guān)業(yè)務(wù),在節(jié)假日的時(shí)候,流量會較平時(shí)增加,也遇到過因?yàn)榱髁孔兇髮?dǎo)致的整個(gè)系統(tǒng)短時(shí)間內(nèi)訪問異常的情況,解決方案有以下幾種:

          1、提前擴(kuò)容,針對可能存在性能瓶頸的服務(wù)實(shí)例,節(jié)前提前擴(kuò)容,做到臨時(shí)以防萬一。

          2、服務(wù)降級,對于廣告業(yè)務(wù)線中收入占比不是很大或者耗時(shí)比較久的業(yè)務(wù),不對其進(jìn)行調(diào)用或者降低調(diào)用請求量從而使得整個(gè)系統(tǒng)的rt盡可能的小,以能夠接受更多的請求去處理重要業(yè)務(wù)線

          3、其他




          瀏覽 51
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  激情综合网站 | 天天干天天天干 | 人人操人人操人人 | 成人毛片18女人毛片软件下载 | 日本无码中文字幕在线视频公司 |