最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中的Sentinel熔斷降級詳解

 更新時間:2023年09月12日 10:13:50   作者:小鐘要學習!??!  
這篇文章主要介紹了Spring中的Sentinel熔斷降級詳解,熔斷降級是一種保護系統(tǒng)穩(wěn)定性和可用性的機制,旨在防止故障的擴散和蔓延,提高用戶體驗和信任度,需要的朋友可以參考下

1、介紹

Sentinel 提供以下幾種熔斷策略:

  • 慢調(diào)用比例 (SLOW_REQUEST_RATIO):選擇以慢調(diào)用比例作為閾值,需要設(shè)置允許的慢調(diào)用 RT(即最大的響應時間),請求的響應時間大于該值則統(tǒng)計為慢調(diào)用。當單位統(tǒng)計時長(statIntervalMs)內(nèi)請求數(shù)目大于設(shè)置的最小請求數(shù)目,并且慢調(diào)用的比例大于閾值,則接下來的熔斷時長內(nèi)請求會自動被熔斷。經(jīng)過熔斷時長后熔斷器會進入探測恢復狀態(tài)(HALF-OPEN 狀態(tài)),若接下來的一個請求響應時間小于設(shè)置的慢調(diào)用 RT 則結(jié)束熔斷,若大于設(shè)置的慢調(diào)用 RT 則會再次被熔斷。
  • 異常比例 (ERROR_RATIO):當單位統(tǒng)計時長(statIntervalMs)內(nèi)請求數(shù)目大于設(shè)置的最小請求數(shù)目,并且異常的比例大于閾值,則接下來的熔斷時長內(nèi)請求會自動被熔斷。經(jīng)過熔斷時長后熔斷器會進入探測恢復狀態(tài)(HALF-OPEN 狀態(tài)),若接下來的一個請求成功完成(沒有錯誤)則結(jié)束熔斷,否則會再次被熔斷。異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%。
  • 異常數(shù) (ERROR_COUNT):當單位統(tǒng)計時長內(nèi)的異常數(shù)目超過閾值之后會自動進行熔斷。經(jīng)過熔斷時長后熔斷器會進入探測恢復狀態(tài)(HALF-OPEN 狀態(tài)),若接下來的一個請求成功完成(沒有錯誤)則結(jié)束熔斷,否則會再次被熔斷。

注意異常降級僅針對業(yè)務(wù)異常,對 Sentinel 限流降級本身的異常( BlockException )不生效。為了統(tǒng)計異常比例或異常數(shù),需要通過 Tracer.trace(ex) 記錄業(yè)務(wù)異常。示例:

進一步說明

Sentinel 熔斷降級會在調(diào)用鏈路中某個資源出現(xiàn)不穩(wěn)定狀態(tài)時(例如調(diào)用超時或異常比例升高),對這個資源的調(diào)用進行限制,讓請求快速失敗,避免影響到其它的資源而導致級聯(lián)錯誤。

當資源被降級后,在接下來的降級時間窗口之內(nèi),對該資源的調(diào)用都自動熔斷(默認行為是拋出 DegradeException)。

熔斷有三種狀態(tài),分別為OPEN、HALF_OPEN、CLOSED Hystrix復習

半開的狀態(tài)系統(tǒng)自動去檢測是否請求有異常,沒有異常就關(guān)閉斷路器恢復使用,有異常則繼續(xù)打開斷路器不可用。具體可以參考Hystrix

2、降級策略實戰(zhàn)

2.1、慢調(diào)用比例策列

業(yè)務(wù)的響應時長(RT)大于指定時長的請求認定為慢調(diào)用。在指定時間內(nèi),如果請求數(shù)量超過了設(shè)定的最小數(shù)量,慢調(diào)用比例大于設(shè)定的閾值,則觸發(fā)熔斷

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6G6COi5L-1669331553551)(image/197、新增熔斷規(guī)則.png)]

屬性描述

屬性描述
最大RT需要設(shè)置的閾值,超過該值則為慢調(diào)用
比例閾值慢調(diào)用所占有的調(diào)用比例,范圍[0.0,10.]
熔斷時長在這段時間內(nèi)發(fā)生熔斷、拒絕所有請求,經(jīng)過熔斷時長后熔斷器會進入探測恢復狀態(tài)(HALF-OPEN 狀態(tài))
最小請求數(shù)即允許通過的最小請求數(shù),在該數(shù)量內(nèi)不發(fā)生熔斷

執(zhí)行邏輯

上面慢調(diào)用的執(zhí)行流程解讀:

一個接口請求響應的速度大于【最大RT(200ms),業(yè)務(wù)代碼設(shè)置1秒】,統(tǒng)計最近10000毫秒內(nèi)的所有請求,如果請求數(shù)量超過10次,并且慢調(diào)用比例不低于0.4,則觸發(fā)熔斷,熔斷時長為【自定義5秒】,然后進入half-open狀態(tài),放行一次請求做測試

  • 熔斷(OPEN):請求數(shù)大于最小請求數(shù)并且慢調(diào)用的比率大于比例閾值則發(fā)生熔斷,熔斷時長為用戶自定義設(shè)置。
  • 探測(HALFOPEN):當熔斷過了定義的熔斷時長,狀態(tài)由熔斷(OPEN)變?yōu)樘綔y(HALFOPEN)。

注意Sentinel默認統(tǒng)計的RT上限是4900ms,超出此閾值的都會算作4900ms,若需要變更此上限可以通過啟動配置項-Dcsp.sentinel.statistic.max.rt=xxx來配置

添加控制器

請求線程睡眠一秒方便后面的壓測測試

@GetMapping("/testD")
public String testD()
{
    //暫停幾秒鐘線程
    try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
    log.info("testD 測試RT");
    return "------testD";
}

JMeter壓測

  • 先創(chuàng)建一個組(1秒發(fā)生10個請求,并且循環(huán)進行,只有點擊停止的時候才會停止)
  • 再創(chuàng)建一個請求

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Z986ir0f-1669331553552)(image/198、啟動測試.png)]

在上面的測試中在通過訪問://localhost:8401/testD發(fā)現(xiàn)會出現(xiàn)如下錯誤,因為被熔斷了,當停止壓測再請求又可以了

Blocked by Sentinel (flow limiting)

2.2、異常比例

統(tǒng)計指定時間內(nèi)的調(diào)用,如果調(diào)用次數(shù)超過指定請求數(shù),并且出現(xiàn)異常的比例達到設(shè)定的比例閾值(或超過指定異常數(shù)),則觸發(fā)熔斷

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ytpvB6bZ-1669331553552)(image/199、異常比例.png)]

解讀

統(tǒng)計最近1000ms內(nèi)的所有請求,如果請求量超過5次,并且異常比例不低于0.4,則觸發(fā)熔斷,熔斷時長為5秒。然后進入half-open狀態(tài),放行異常請求做測試

修改業(yè)務(wù)代碼報錯

@GetMapping("/testD")
public String testD()
{
    //暫停幾秒鐘線程
    //try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
    // log.info("testD 測試RT");
    int a = 1/0;
    log.info("testD 異常比例數(shù)觸發(fā)熔斷");
    return "------testD";
}

啟動測試刷新后臺報出異常,然后進入熔斷輸出內(nèi)容

Blocked by Sentinel (flow limiting)

2.3、異常數(shù)

異常數(shù)與異常比例是一樣的,只是將異常比例閾值指定為具體的異常數(shù)就會觸發(fā)熔斷

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bhcWofrX-1669331553553)(image/200、異常數(shù).png)]

在1秒中內(nèi)的請求數(shù),有2次都是異常的就會觸發(fā)5秒熔斷

到此這篇關(guān)于Spring中的Sentinel熔斷降級詳解的文章就介紹到這了,更多相關(guān)Sentinel熔斷降級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實現(xiàn)爬蟲爬網(wǎng)站圖片的實例代碼

    java實現(xiàn)爬蟲爬網(wǎng)站圖片的實例代碼

    這篇文章主要介紹了java實現(xiàn)爬蟲爬網(wǎng)站圖片的實例代碼,需要的朋友可以參考下
    2018-06-06
  • java實現(xiàn)分布式鎖的常用三種方式

    java實現(xiàn)分布式鎖的常用三種方式

    本文主要介紹了java實現(xiàn)分布式鎖,一般有這3種方式,基于數(shù)據(jù)庫實現(xiàn)的分布式鎖、基于Redis實現(xiàn)的分布式鎖和基于Zookeeper實現(xiàn)的分布式鎖,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • SpringBoot整合Swagger2的示例

    SpringBoot整合Swagger2的示例

    這篇文章主要介紹了SpringBoot整合Swagger2的示例,幫助大家更好的理解和學習springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • Java SpringBoot自動裝配原理詳解

    Java SpringBoot自動裝配原理詳解

    這篇文章主要介紹了詳解Spring Boot自動裝配的原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09
  • java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類包含start()和run()方法,它們的區(qū)別是什么?下面將對此作出解答
    2014-01-01
  • 在IntelliJ IDEA中為自己設(shè)計的類庫生成JavaDoc的方法示例

    在IntelliJ IDEA中為自己設(shè)計的類庫生成JavaDoc的方法示例

    這篇文章主要介紹了在IntelliJ IDEA中為自己設(shè)計的類庫生成JavaDoc的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • java獲取日期之間天數(shù)的方法

    java獲取日期之間天數(shù)的方法

    這篇文章主要介紹了java獲取日期之間天數(shù)的方法,涉及java針對日期的轉(zhuǎn)換與數(shù)學運算相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Java開發(fā)崗位面試被問到反射怎么辦

    Java開發(fā)崗位面試被問到反射怎么辦

    這篇文章主要介紹了java 面向?qū)ο竺嬖嚰\的相關(guān)資料,這里整理了面向?qū)ο蟮幕A(chǔ)知識,幫助大家學習理解此部分的知識,需要的朋友可以參考下
    2021-07-07
  • 淺談java 中equals和==的區(qū)別

    淺談java 中equals和==的區(qū)別

    這篇文章主要介紹了java 中equals和==的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • java TreeMap源碼解析詳解

    java TreeMap源碼解析詳解

    這篇文章主要介紹了java TreeMap源碼解析詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論

镇平县| 新泰市| 神池县| 阿荣旗| 咸丰县| 海伦市| 治县。| 新巴尔虎右旗| 朔州市| 蓬溪县| 青浦区| 利津县| 阳春市| 扶风县| 五原县| 育儿| 特克斯县| 永定县| 新宁县| 连城县| 阿拉善盟| 无锡市| 通山县| 台安县| 霍城县| 璧山县| 安仁县| 夏津县| 屏东市| 和硕县| 武汉市| 榆中县| 犍为县| 房产| 洞口县| 珲春市| 舟曲县| 广安市| 河津市| 寻乌县| 六枝特区|