真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

本篇文章為大家展示了Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)主營(yíng)宜豐網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,宜豐h5成都微信小程序搭建,宜豐網(wǎng)站營(yíng)銷推廣歡迎宜豐等地區(qū)企業(yè)咨詢

  

一、流控效果源碼結(jié)構(gòu)

在FlowRule更新緩存時(shí),根據(jù)配置的不同類型初始化不同的流控效果處理類。 

1.流控效果封裝入口
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

2.分發(fā)不同的控制類
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

3.流控控制類圖
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

二、快速失敗

快速失敗即發(fā)送流控時(shí)拋出FlowException。 

1.快速失敗流程
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

備注
@1 獲取當(dāng)前已經(jīng)使用的線程數(shù)或者QPS
@2 與閾值進(jìn)行判斷,是否允許本次通行
@3 QPS流控并且prioritized設(shè)置為true表示預(yù)占用令牌
@4 大于閾值觸發(fā)流控
@5 小于閾值允許通行

2.預(yù)占用令牌
 

預(yù)占用令牌:當(dāng)基于QPS流控時(shí)并且prioritized設(shè)置為true,表示當(dāng)前時(shí)間窗口令牌不夠時(shí),預(yù)占用下個(gè)時(shí)間窗口的令牌并返回需要等待的時(shí)間。

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

備注:在不考慮優(yōu)先級(jí)(預(yù)占用)令牌的情況,快速失敗比較簡(jiǎn)單。

三、令牌桶原理

預(yù)熱模式緩慢增加流量的一種方式,避免瞬間流量將系統(tǒng)壓垮。
1.令牌桶圖示
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

工作過程

  • 請(qǐng)求流量從令牌桶中獲取令牌,持有令牌放行,否則被拒

  • 假如設(shè)置閾值每秒允許100個(gè)請(qǐng)求通過,則請(qǐng)求發(fā)送速率r=100/s

  • 需要令牌生產(chǎn)速率為1/r,即1/100每10毫秒產(chǎn)生一個(gè)令牌

  • 令牌桶容量為b已滿多余的令牌將被丟棄

  • 令牌桶為空請(qǐng)求被拒

  • 允許突發(fā)流量最大突發(fā)流量為令牌桶容量b

  • 請(qǐng)求通過相應(yīng)的令牌從令牌桶中移除

2.令牌桶限流原理
 

假如系統(tǒng)平時(shí)流量很低,突然陡增的流量需要緩慢增加。具體到令牌桶,可以通過控制令牌的生產(chǎn)速率來對(duì)流量進(jìn)行控制。令牌生產(chǎn)速率如何控制?

我們?cè)谑褂胹entinel設(shè)置QPS的預(yù)熱流控時(shí),需要設(shè)置閾值count和預(yù)熱時(shí)長(zhǎng)warmUpPeriodInSec,下面梳理下與下圖坐標(biāo)圖的關(guān)系。

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

坐標(biāo)圖說明

參數(shù)說明
x軸表示令牌桶中的令牌數(shù)量
y軸生產(chǎn)一個(gè)令牌需要的時(shí)間(秒)
stableInterval穩(wěn)定生產(chǎn)一個(gè)令牌需要的時(shí)間
coldInterval生產(chǎn)一個(gè)令牌需要的最大時(shí)長(zhǎng),與冷啟動(dòng)因子coldFactor有關(guān),可以通過-Dcsp.sentinel.flow.cold.factor設(shè)置,默認(rèn)為3。
warmUpPeriodInSec預(yù)熱時(shí)長(zhǎng),默認(rèn)為10秒。對(duì)應(yīng)到坐標(biāo)圖中為(2)梯形面積
thresholdPermits(warningToken)令牌桶中的一個(gè)閾值,超過該值時(shí)開啟預(yù)熱
maxPermits(maxToken)令牌桶中最大令牌數(shù)

換算關(guān)系

  • count,已知由用戶設(shè)置,例如每秒允許通過100個(gè)請(qǐng)求

  • warmUpPeriodInSec,已知由用戶設(shè)置,默認(rèn)為10秒,時(shí)間區(qū)域上紅色(2)梯形區(qū)域

  • coldFactor,已知默認(rèn)為3

公式一:stableInterval = 1/count公式二:coldInterval = stableInterval * coldFactor

備注:由于coldFactor默認(rèn)為3,y軸stableInterval~coldInterval的距離是0~stableInterval的距離兩倍,時(shí)間區(qū)域上紅色(2)梯形區(qū)域是紅色1的長(zhǎng)方形區(qū)域的兩倍。

公式三:坐標(biāo)時(shí)間(1)長(zhǎng)方形區(qū)域面積 = 長(zhǎng)(thresholdPermits(warningToken)) * 寬(stableInterval)公式四:坐標(biāo)時(shí)間(1)長(zhǎng)方形區(qū)域面積 = 0.5 * warmUpPeriodInSec公式五:thresholdPermits(warningToken)=0.5 * warmUpPeriodInSec/stableInterval

備注:梯形的面積 = (上低+下低)* 高 ? 2 推導(dǎo)出maxPermits(maxToken)的值。

公式六:maxPermits(maxToken) = thresholdPermits(warningToken) + 2 * warmUpPeriodInSec ? (stableInterval + coldInterval)

備注:由斜率公式k=(y1-y2)?(x1-x2),得出斜率如下。

slope = (coldInterval-stableInterval)?(maxPermits(maxToken)-thresholdPermits(warningToken))

原理概述

當(dāng)令牌桶中的令牌數(shù)小于thresholdPermits(warningToken)時(shí),令牌按照固定速率生產(chǎn),請(qǐng)求流量穩(wěn)定。當(dāng)令牌數(shù)大于thresholdPermits(warningToken)時(shí),開啟預(yù)熱。此段時(shí)期,生產(chǎn)的令牌的速率小于令牌滑落的速度,一段時(shí)間后,令牌小于等于thresholdPermits(warningToken),請(qǐng)求回歸到穩(wěn)定狀態(tài),預(yù)熱結(jié)束。

四、預(yù)熱源碼分析

1.WarmUpController構(gòu)造函數(shù)
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

備注:此部分主要計(jì)算了warningToken閾值、最大令牌數(shù)maxToken、斜率slope,詳細(xì)推導(dǎo)過程見原理部分。

2.請(qǐng)求判斷邏輯
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

3.令牌的生產(chǎn)和滑落
 

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

備注:從代碼可以看出sentinel中桶中的令牌生產(chǎn)和移除是在下次請(qǐng)求到來時(shí)一起處理的,另外Sentinel提供的令牌生產(chǎn)公式與當(dāng)前時(shí)間currentTime有關(guān)系,如果一個(gè)冷系統(tǒng)好久沒有流量,瞬間來了很大流量,此時(shí)的桶中令牌數(shù)會(huì)直接到達(dá)最大值maxToken,這也是官方提供的曲線圖中開始流量比較陡的原因。

Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱

上述內(nèi)容就是Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章題目:Sentinel中怎么利用令牌桶實(shí)現(xiàn)預(yù)熱
文章轉(zhuǎn)載:http://weahome.cn/article/poeeeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部