熔斷降級(jí)

1 什么是熔斷降級(jí)

熔斷降級(jí)對(duì)調(diào)用鏈路中不穩(wěn)定的資源進(jìn)行熔斷降級(jí)是保障高可用的重要措施之一悔叽。

由于調(diào)用關(guān)系的復(fù)雜性爽篷,如果調(diào)用鏈路中的某個(gè)資源不穩(wěn)定,最終會(huì)導(dǎo)致請(qǐng)求發(fā)生堆積绰筛。Sentinel 熔斷降級(jí)會(huì)在調(diào)用鏈路中某個(gè)資源出現(xiàn)不穩(wěn)定狀態(tài)時(shí)(例如調(diào)用超時(shí)或異常比例升高)枢泰,對(duì)這個(gè)資源的調(diào)用進(jìn)行限制,讓請(qǐng)求快速失敗铝噩,避免影響到其它的資源而導(dǎo)致級(jí)聯(lián)錯(cuò)誤衡蚂。當(dāng)資源被降級(jí)后,在接下來(lái)的降級(jí)時(shí)間窗口之內(nèi)骏庸,對(duì)該資源的調(diào)用都自動(dòng)熔斷(默認(rèn)行為是拋出 DegradeException)

2. 熔斷降級(jí)規(guī)則

熔斷降級(jí)規(guī)則包含下面幾個(gè)重要的屬性:

Field 說(shuō)明 默認(rèn)值
resource 資源名毛甲,即規(guī)則的作用對(duì)象
grade 熔斷策略,支持慢調(diào)用比例/異常比例/異常數(shù)策略 慢調(diào)用比例
count 慢調(diào)用比例模式下為慢調(diào)用臨界 RT(超出該值計(jì)為慢調(diào)用)具被;異常比例/異常數(shù)模式下為對(duì)應(yīng)的閾值
timeWindow 熔斷時(shí)長(zhǎng)玻募,單位為 s
minRequestAmount 熔斷觸發(fā)的最小請(qǐng)求數(shù),請(qǐng)求數(shù)小于該值時(shí)即使異常比率超出閾值也不會(huì)熔斷(1.7.0 引入) 5
statIntervalMs 統(tǒng)計(jì)時(shí)長(zhǎng)(單位為 ms)一姿,如 60*1000 代表分鐘級(jí)(1.8.0 引入) 1000 ms
slowRatioThreshold 慢調(diào)用比例閾值七咧,僅慢調(diào)用比例模式有效(1.8.0 引入)

3 幾種降級(jí)策略

我們通常用以下幾種降級(jí)策略:

  • 平均響應(yīng)時(shí)間 (DEGRADE_GRADE_RT):

當(dāng)資源的平均響應(yīng)時(shí)間超過(guò)閾值(DegradeRule 中的 count,以 ms 為單位)之后叮叹,資源進(jìn)入準(zhǔn)降級(jí)狀態(tài)艾栋。如果接下來(lái) 1s 內(nèi)持續(xù)進(jìn)入 5 個(gè)請(qǐng)求(即 QPS >= 5),它們的 RT 都持續(xù)超過(guò)這個(gè)閾值蛉顽,那么在接下的時(shí)間窗口(DegradeRule 中的 timeWindow蝗砾,以 s 為單位)之內(nèi),對(duì)這個(gè)方法的調(diào)用都會(huì)自動(dòng)地熔斷(拋出 DegradeException)携冤。

注意 Sentinel 默認(rèn)統(tǒng)計(jì)的 RT 上限是 4900 ms遥诉,超出此閾值的都會(huì)算作 4900 ms,若需要變更此上限可以通過(guò)啟動(dòng)配置項(xiàng) -Dcsp.sentinel.statistic.max.rt=xxx 來(lái)配置噪叙。

  • 異常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):

當(dāng)資源的每秒異嘲猓總數(shù)占通過(guò)量的比值超過(guò)閾值(DegradeRule 中的 count)之后,資源進(jìn)入降級(jí)狀態(tài)睁蕾,即在接下的時(shí)間窗口(DegradeRule 中的 timeWindow苞笨,以 s 為單位)之內(nèi)债朵,對(duì)這個(gè)方法的調(diào)用都會(huì)自動(dòng)地返回。

異常比率的閾值范圍是 [0.0, 1.0]瀑凝,代表 0% - 100%序芦。

  • 異常數(shù) (DEGRADE_GRADE_EXCEPTION_COUNT):

當(dāng)資源近 1 分鐘的異常數(shù)目超過(guò)閾值之后會(huì)進(jìn)行熔斷。

注意由于統(tǒng)計(jì)時(shí)間窗口是分鐘級(jí)別的粤咪,若 timeWindow 小于 60s谚中,則結(jié)束熔斷狀態(tài)后仍可能再進(jìn)入熔斷狀態(tài)。

4 熔斷降級(jí)代碼實(shí)現(xiàn)

可以通過(guò)調(diào)用 DegradeRuleManager.loadRules() 方法來(lái)用硬編碼的方式定義流量控制規(guī)則寥枝。

    @PostConstruct
    public void initSentinelRule()
    {
        //熔斷規(guī)則: 5s內(nèi)調(diào)用接口出現(xiàn)異常次數(shù)超過(guò)5的時(shí)候, 進(jìn)行熔斷
        List<DegradeRule> degradeRules = new ArrayList<>();
        DegradeRule rule = new DegradeRule();
        rule.setResource("queryGoodsInfo");
        rule.setCount(5);

        rule.setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT);//熔斷規(guī)則
        rule.setTimeWindow(5);
        degradeRules.add(rule);
        DegradeRuleManager.loadRules(degradeRules);
    }

5 控制臺(tái)降級(jí)規(guī)則

配置



參數(shù)

Field 說(shuō)明 默認(rèn)值
resource 資源名宪塔,即限流規(guī)則的作用對(duì)象
count 閾值
grade 降級(jí)模式,根據(jù) RT 降級(jí)還是根據(jù)異常比例降級(jí) RT
timeWindow 降級(jí)的時(shí)間囊拜,單位為 s

6 與Hystrix的熔斷對(duì)比:

Hystrix常用的線程池隔離會(huì)造成線程上下切換的overhead比較大某筐;Hystrix使用的信號(hào)量隔離對(duì)某個(gè)資源調(diào)用的并發(fā)數(shù)進(jìn)行控制,效果不錯(cuò)冠跷,但是無(wú)法對(duì)慢調(diào)用進(jìn)行自動(dòng)降級(jí)南誊;

Sentinel通過(guò)并發(fā)線程數(shù)的流量控制提供信號(hào)量隔離的功能;此外蜜托,Sentinel支持的熔斷降級(jí)維度更多抄囚,可對(duì)多種指標(biāo)進(jìn)行流控、熔斷橄务,且提供了實(shí)時(shí)監(jiān)控和控制面板怠苔,功能更為強(qiáng)大。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仪糖,一起剝皮案震驚了整個(gè)濱河市柑司,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锅劝,老刑警劉巖攒驰,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異故爵,居然都是意外死亡玻粪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門诬垂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)劲室,“玉大人,你說(shuō)我怎么就攤上這事结窘『苎螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵隧枫,是天一觀的道長(zhǎng)喉磁。 經(jīng)常有香客問(wèn)我谓苟,道長(zhǎng),這世上最難降的妖魔是什么协怒? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任涝焙,我火速辦了婚禮,結(jié)果婚禮上孕暇,老公的妹妹穿的比我還像新娘仑撞。我一直安慰自己,他們只是感情好妖滔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布隧哮。 她就那樣靜靜地躺著,像睡著了一般铛楣。 火紅的嫁衣襯著肌膚如雪近迁。 梳的紋絲不亂的頭發(fā)上艺普,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天簸州,我揣著相機(jī)與錄音,去河邊找鬼歧譬。 笑死岸浑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瑰步。 我是一名探鬼主播矢洲,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缩焦!你這毒婦竟也來(lái)了读虏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤袁滥,失蹤者是張志新(化名)和其女友劉穎盖桥,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體题翻,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揩徊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嵌赠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塑荒。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姜挺,靈堂內(nèi)的尸體忽然破棺而出齿税,到底是詐尸還是另有隱情,我是刑警寧澤炊豪,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布偎窘,位于F島的核電站乌助,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏陌知。R本人自食惡果不足惜他托,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仆葡。 院中可真熱鬧赏参,春花似錦、人聲如沸沿盅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腰涧。三九已至韧掩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窖铡,已是汗流浹背疗锐。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留费彼,地道東北人滑臊。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像箍铲,于是被迫代替她去往敵國(guó)和親雇卷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容