欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Sentinel流控規(guī)則實現(xiàn)限流保護(hù)詳解

 更新時間:2023年05月20日 10:29:34   作者:小白的救贖  
這篇文章主要介紹了Sentinel流控規(guī)則實現(xiàn)限流保護(hù),Sentinel是一個分布式系統(tǒng)的流量控制組件,它可以實現(xiàn)限流,流控,降級等功能,提高系統(tǒng)的穩(wěn)定性和可靠性,感興趣想要詳細(xì)了解可以參考下文

具體啟動Sentinel的步驟可以參考我的上一篇文章。

概念

資源名:唯一名稱,默認(rèn)請求路徑

針對來源:Sentinel可以針對調(diào)用者進(jìn)行限流,填寫微服務(wù)名,默認(rèn)default (不區(qū)分來源)

閱值類型單機(jī)閱值:
        QPS(每秒鐘的請求數(shù)量):當(dāng)調(diào)用該api的QPS達(dá)到值的時候,進(jìn)行限流
        線程數(shù):當(dāng)調(diào)用該api的線程數(shù)達(dá)到闊值的時候,進(jìn)行限流

是否集群:不需要集群

流控模式:
        直接:api達(dá)到限流條件時,直接限流
        關(guān)聯(lián):當(dāng)關(guān)聯(lián)的資源達(dá)到聞值時,就限流自己
        鏈路:只記錄指定鏈路上的流量(指定資源從入口資源進(jìn)來的流量,如果達(dá)到闊值,就進(jìn)行限流)[api級別的針對來源]
流控效果:
        快速失?。褐苯邮?,拋異常
        Warm Up(預(yù)熱):根據(jù)codeFactor (冷加載因子,默認(rèn)3) 的值,從聞值/codeFactor,經(jīng)過預(yù)熱時長,才達(dá)到設(shè)置的QPS閩值
        排隊等待:勻速排隊,讓請求以勻速的速度通過,闊值類型必須設(shè)置為QPS,否則無效

流控規(guī)則

直接(默認(rèn))

控制層方法如下:

@RestController
public class SentinelController {
    @GetMapping("/testA")
    public String testA(){
        return "Sentinel testA run";
    }
    @GetMapping("/testB")
    public String testB(){
        return "Sentinel testB run";
    }
}

QPS+快速失敗

通過地址欄輸入:localhost:8401/testA

測試發(fā)現(xiàn)當(dāng)每秒刷新頁面的次數(shù)大于1則會彈出以下頁面(表示限流),否則正常

線程數(shù)+直接控制

而直接控制的線程數(shù)設(shè)置為1表示如果超過一個頁面訪問此連接那就會限流否則正常。這里就不再對線程數(shù)做測試了

QPS+Warming up

Warm Up(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式,即預(yù)熱/冷啟動方式。當(dāng)系統(tǒng)流量長期處于低水位的情況下,當(dāng)流量突然增加時,直接把系統(tǒng)拉升到高水位可能瞬間把系統(tǒng)壓垮。通過"冷啟動",讓通過的流量緩慢增加,在一定時間內(nèi)逐漸增加到閾值上限,給冷系統(tǒng)一個預(yù)熱的時間,避免冷系統(tǒng)被壓垮。

舉例:當(dāng)預(yù)熱時長=8,QPS單機(jī)閾值=3

  • 當(dāng)并發(fā)請求到達(dá)的時候,實際的單機(jī)閾值是:QPS單機(jī)閾值配置 / coldFactoer= 3 / 3 =1,也就是每秒鐘只能一個請求訪問成功。
  • 預(yù)熱時長為8秒,實際的單機(jī)閾值在8秒鐘內(nèi)逐步由1 -> 2 -> 3,最終等于QPS單機(jī)閾值配置。
  • 這里有一個注意點是QPS單機(jī)閾值一定要大于或等于3否則會一直請求不成功

QPS+排隊等待

排隊等待方式會嚴(yán)格的控制請求通過的間隔時間,就是讓請求勻速的通過,對應(yīng)的是漏桶算法。

言簡意賅:QPS對應(yīng)每秒處理的線程為1,超時時間表示超過10s則不接受其他線程的請求。也就是說將超時時間(ms) / 單機(jī)閾值(s/個) = 線程通過數(shù)。

關(guān)聯(lián)

使用了testA關(guān)聯(lián)testB那么當(dāng)二者其一越界了即二者其一或者觸犯了閾值規(guī)則,那么規(guī)則的時長內(nèi)即QPS內(nèi)testA是無法訪問的,換句通俗易懂的就是:其中一個犯錯,testA就得扛鍋。但要注意的是不是永久失效,只是閾值內(nèi)失效。

鏈路

與關(guān)聯(lián)相反。兩者之一犯錯,那么就是入口資源背鍋。

關(guān)聯(lián)與鏈路的區(qū)別

關(guān)聯(lián):

配置: “查詢訂單” 關(guān)聯(lián) “下單” 接口, 當(dāng)"下單"到達(dá)閾值, 限流"查詢訂單"接口

鏈路:

配置: “查詢訂單”為入口時, 當(dāng)"查詢訂單"到達(dá)閾值時, 限流"查詢訂單"

到此這篇關(guān)于Sentinel流控規(guī)則實現(xiàn)限流保護(hù)流程詳解的文章就介紹到這了,更多相關(guān)Sentinel流控規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點點(19)

    Java日常練習(xí)題,每天進(jìn)步一點點(19)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Java多線程之定時器Timer的實現(xiàn)

    Java多線程之定時器Timer的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java多線程中定時器Timer類的使用以及模擬實現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Java線程創(chuàng)建靜態(tài)代理模式代碼實例

    Java線程創(chuàng)建靜態(tài)代理模式代碼實例

    這篇文章主要介紹了Java線程創(chuàng)建靜態(tài)代理模式代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • java排序算法之冒泡排序

    java排序算法之冒泡排序

    這篇文章主要為大家詳細(xì)介紹了java排序算法之冒泡排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Spring實現(xiàn)自定義注解處理器解析和處理注解

    Spring實現(xiàn)自定義注解處理器解析和處理注解

    這篇文章主要介紹了Spring實現(xiàn)自定義注解處理器解析和處理注解,注解在現(xiàn)代Java編程中扮演了至關(guān)重要的角色,無論是簡化代碼、增強(qiáng)可讀性,還是將元數(shù)據(jù)與業(yè)務(wù)邏輯分離,注解都讓我們的代碼更加優(yōu)雅和靈活,需要的朋友可以參考下
    2024-10-10
  • 使用ResponseEntity處理API返回問題

    使用ResponseEntity處理API返回問題

    這篇文章主要介紹了使用ResponseEntity處理API返回問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 淺談java+內(nèi)存分配及變量存儲位置的區(qū)別

    淺談java+內(nèi)存分配及變量存儲位置的區(qū)別

    下面小編就為大家?guī)硪黄獪\談java+內(nèi)存分配及變量存儲位置的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • IDEA?2022.1.4用前注意事項

    IDEA?2022.1.4用前注意事項

    這篇文章主要介紹了IDEA?2022.1.4用前注意事項,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • java多線程中的生產(chǎn)者和消費者隊列詳解

    java多線程中的生產(chǎn)者和消費者隊列詳解

    這篇文章主要介紹了java多線程中的生產(chǎn)者和消費者隊列詳解,隊列,是一種數(shù)據(jù)結(jié)構(gòu),除了優(yōu)先級隊列和LIFO隊列外,隊列都是以FIFO(先進(jìn)先出)的方式對各個元素進(jìn)行排序的,需要的朋友可以參考下
    2024-01-01
  • 獲取Java的MyBatis框架項目中的SqlSession的方法

    獲取Java的MyBatis框架項目中的SqlSession的方法

    SqlSession中包括已經(jīng)映射好的SQL語句,這樣對象實例就可以直接拿過來用了,那么這里就來講解獲取Java的MyBatis框架項目中的SqlSession的方法
    2016-06-06

最新評論