<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ù)流控防護(hù)場(chǎng)景與應(yīng)對(duì)措施

          共 1887字,需瀏覽 4分鐘

           ·

          2021-03-27 04:05

          前言

          微服務(wù)成了互聯(lián)網(wǎng)架構(gòu)的標(biāo)配模式,對(duì)微服務(wù)之間的調(diào)用的流量治理和管控就尤為重要。哪些場(chǎng)景需要流量防控,針對(duì)這些場(chǎng)景又有哪些應(yīng)對(duì)措施。有沒有一個(gè)通用的措施來降低風(fēng)險(xiǎn)呢?這篇文章咱就聊聊這個(gè)。

          一、服務(wù)被過載調(diào)用

          當(dāng)服務(wù)D的某個(gè)接口服務(wù)被上游服務(wù)過載調(diào)用時(shí),如果不對(duì)服務(wù)D加入保護(hù),可能整體將服務(wù)D整體拖垮。在這種場(chǎng)景中,我們需要對(duì)服務(wù)D配置限流,以保護(hù)服務(wù)D不被整體沖跨。


          應(yīng)對(duì)措施: 針對(duì)服務(wù)提供方D配置流量防護(hù)規(guī)則,對(duì)進(jìn)入服務(wù)D的流量進(jìn)行控制,從而對(duì)服務(wù)D提供保護(hù)。觸發(fā)流控時(shí)可以有多重策略,例如:快速失敗、預(yù)熱模式、排隊(duì)等待、預(yù)熱模式+排隊(duì)等待。

          快速失敗: 發(fā)生流控時(shí)直接拋出異常。

          預(yù)熱模式: 發(fā)生流控時(shí),流量緩慢增加的一種模式,效果如下圖所示,流量QPS從200緩慢增加到600。


          排隊(duì)等待: 請(qǐng)求勻速通過,過多請(qǐng)求需要排隊(duì),此時(shí)排隊(duì)有超時(shí)時(shí)間,超過排隊(duì)時(shí)間拋出流控異常。效果如下圖所示:請(qǐng)求QPS保持1000的勻速通過。


          預(yù)熱模式+排隊(duì)等待: 這種模式是預(yù)熱和排隊(duì)等待的疊加模式,請(qǐng)求以勻速的方式緩慢增加。如下圖:請(qǐng)求從0緩慢增加到500,勻速通過一段時(shí)間后,再增加到1000。


          二、服務(wù)慢調(diào)用或故障

          下面的場(chǎng)景A調(diào)用B、A調(diào)用C、A調(diào)用D,當(dāng)服務(wù)B服務(wù)不穩(wěn)定時(shí),服務(wù)A調(diào)用服務(wù)B發(fā)生了慢調(diào)用或者大量異常錯(cuò)誤。這種場(chǎng)景,如果不干預(yù),可能影響到A調(diào)用C和A調(diào)用D的狀況。


          應(yīng)對(duì)措施: A調(diào)用B配置熔斷降級(jí)規(guī)則,當(dāng)服務(wù)B不穩(wěn)定發(fā)生慢調(diào)用或者異常時(shí),如果觸發(fā)閾值,將服務(wù)B的調(diào)用熔斷;從而保護(hù)了服務(wù)A調(diào)用C、服務(wù)A調(diào)用D的正常情況。

          熔斷效果: 熔斷的實(shí)現(xiàn)通常通過斷路器實(shí)現(xiàn),具體過程為:

          • 當(dāng)滿足慢調(diào)用比例、異常比例、異常數(shù)量閾值后,觸發(fā)熔斷(OPEN),在熔斷時(shí)長(zhǎng)內(nèi)拒絕所有請(qǐng)求

          • 當(dāng)熔斷過了定義的熔斷時(shí)長(zhǎng),狀態(tài)由熔斷(OPEN)變?yōu)樘綔y(cè)(HALF_OPEN)

          • 接下來的一個(gè)請(qǐng)求不發(fā)生慢調(diào)用或者異常,熔斷結(jié)束由探測(cè)狀態(tài)(HALF_OPEN)變?yōu)椋–LOSED)

          • 接下來的一個(gè)請(qǐng)求發(fā)生慢調(diào)用或者異常,繼續(xù)熔斷,由探測(cè)狀態(tài)(HALF_OPEN)變?yōu)椋∣PEN)

          三、服務(wù)資源被擠占

          分布式鏈路中,如果某一條鏈路產(chǎn)生慢調(diào)用,對(duì)其他鏈路造成擠壓。除了上面提到配置熔斷降級(jí)外,可以通過線程并發(fā)控制來隔離。

          下圖中有3條鏈路,其中鏈路1由于服務(wù)E的不穩(wěn)定,產(chǎn)生了慢調(diào)用。



          鏈路1慢調(diào)用可能導(dǎo)致如下情況:

          • 鏈路1線程數(shù)增多對(duì)服務(wù)D資源造成擠壓

          • 對(duì)服務(wù)D資源的過度擠壓,鏈路2和鏈路3造成不穩(wěn)定

          • 極端情況導(dǎo)致整個(gè)服務(wù)D不可用,嚴(yán)重時(shí)引發(fā)雪崩

          應(yīng)對(duì)措施: 通過對(duì)服務(wù)D的MethodA1、MethodA2的線程數(shù)并發(fā)設(shè)置規(guī)則,超過閾值時(shí)將會(huì)觸發(fā)阻斷,不再向下游調(diào)用,避免不可用引發(fā)雪崩。

          并發(fā)控制效果 下圖中設(shè)置了調(diào)用方的并發(fā)線程數(shù)為10,通過每分鐘的查詢可以看出,線程數(shù)一直保持在10。


          四、數(shù)據(jù)過熱擠占資源

          熱點(diǎn)數(shù)據(jù),比如:大促時(shí)的熱銷產(chǎn)品、秒殺類產(chǎn)品等。如下圖所示,如果不對(duì)熱點(diǎn)商品下單流量進(jìn)行管控,可能對(duì)其他商品造成擠壓;影響整個(gè)商品下單體驗(yàn)。


          應(yīng)對(duì)措施: 通過對(duì)熱點(diǎn)參數(shù)測(cè)速,配置流控規(guī)則,超過閾值時(shí)觸發(fā)流控。例如:通過對(duì)入?yún)a(chǎn)品ID進(jìn)行測(cè)速,超過設(shè)置的閾值時(shí),觸發(fā)流控,避免對(duì)其過度擠占資源。

          五、通用防護(hù)分組措施

          上面的現(xiàn)象中,無論是服務(wù)不穩(wěn)定、還是被擠占、或者被過載調(diào)用。除了通過上述的防護(hù)措施外,可以對(duì)服務(wù)進(jìn)行等級(jí)劃分并分組。

          如下圖所示:服務(wù)A和服務(wù)D為核心服務(wù)、服務(wù)B和服務(wù)C為非核心服務(wù)。通過將服務(wù)D進(jìn)行分組,分成了1組和2組。分組1只允許核心服務(wù)調(diào)用,分組2只允許非核心服務(wù)調(diào)用。

          這樣做的好處:將流量進(jìn)行物理隔離,避免由于非核心業(yè)務(wù)流量對(duì)核心業(yè)務(wù)流量造成擠壓、保護(hù)核心鏈路穩(wěn)定性。


          分組措施@1  通常可以更換注冊(cè)中心路徑實(shí)現(xiàn),服務(wù)A和服務(wù)D(分組1)放在同一個(gè)注冊(cè)中心路徑(例如:soa-group1);服務(wù)B、服務(wù)C、服務(wù)D(分組2)放在另一個(gè)不同的注冊(cè)中心路徑(例如:soa-group2)。

          分組措施@2 通過對(duì)分組的服務(wù)節(jié)點(diǎn)打標(biāo)實(shí)現(xiàn),例如:服務(wù)D(分組1)節(jié)點(diǎn)被打標(biāo)為group1,服務(wù)D(分組2)節(jié)點(diǎn)被打標(biāo)為group2。在服務(wù)消費(fèi)方訂閱節(jié)點(diǎn)時(shí)根據(jù)不同的分組篩選節(jié)點(diǎn)調(diào)用。


          有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)

          歡迎大家關(guān)注Java之道公眾號(hào)


          好文章,我在看??

          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  北条麻妃A片在线播放 | 亚洲天堂小说视频 | 久久电影天堂蜜桃 | 黄片精品午夜福利在线免费观看豆花视频 | 日本亲与子乱人妻hd |