sentinel配置測試示例

一.**** 閾值類型和流控模式

image.png

界面配置專業(yè)詞匯概述:

image.png

1.****閾值類型 QPS没炒、流控模式 直接

測試代碼service

image.png

測試代碼限流代碼(參數(shù)和返回類型必須和@SentinelResource注解的方法一樣慢逾,最后一個參數(shù)為BlockException)

image.png

控制層代碼

image.png

修改 limit請求的流控規(guī)則粱侣,如下圖所示: 默認的高級設(shè)置為:
image.png

每秒允許請求數(shù)為 5

image.png

請求并進行測試:

測試需要講究快速點擊缕探、緩慢點擊

· 緩慢點擊
image.png

· JMeter多線程測試快速點擊

·
image.png
image.png

表示1秒內(nèi),查詢5次請求OK维苔; 如果請求在1秒內(nèi)的次數(shù)高于5次宵荒,則進入快速失敗流程,進入熔斷限制函數(shù)中苔悦!

2.****閾值類型 線程數(shù)轩褐、流控模式 直接

Service

image.png

Controller

image.png

/testThreadLimit的請求限流配置,設(shè)置為線程數(shù)玖详。
image.png
單個請求:
image.png
了解 QPS 和線程數(shù)這兩種方式的區(qū)別:
image.png

Jmeter10個線程請求測試:

image.png

限流了

image.png

3.****閾值類型 QPS把介、流控模式 關(guān)聯(lián)

此次的配置采取如下方式:

當關(guān)聯(lián)的資源達到限流條件時,開啟限流 配置請求 /test2 限流QPS蟋座,關(guān)聯(lián) /test1
image.png

文檔解釋現(xiàn)象:

/test1 與 /test2 有關(guān)聯(lián)關(guān)系拗踢。 若 /test2 達到閾值時,會對 /test1 進行限流向臀!

實用背景:

下單和支付接口進行關(guān)聯(lián)巢墅。 如若支付接口達到閾值,就限定下單接口少產(chǎn)生支付接口飒硅,緩解壓力砂缩!
image.png
image.png

如何進行測試呢?

1三娩、正常請求 /test1庵芭,無關(guān)乎快速還是緩慢,都會是正常返回信息雀监。 2双吆、循環(huán)不斷請求/test2眨唬,觸發(fā)該接口的限流操作。 3好乐、再次請求/test1匾竿,查看請求回執(zhí)狀態(tài)信息。

正常請求/test1:

http://localhost:8500/test1 無論快慢蔚万,都是返回下列信息岭妖!

image.png

使用postman、jmeter等工具反璃,迭代請求/test2昵慌,觸發(fā)限流后,再次請求/test1查看回執(zhí)狀態(tài)信息:

image.png
image.png

運行 postman淮蜈,瀏覽器訪問:http://localhost:8500/test1

現(xiàn)象:

image.png
image.png

當/test2觸發(fā)了限流斋攀,此時的/test1請求將會受到影響! 當/test2限流結(jié)束梧田,/test1才能繼續(xù)請求得到回執(zhí)淳蔼!

4.****QPS、鏈路

鏈路:當從某個接口過來的資源達到限流條件時裁眯,開啟限流鹉梨。

鏈路流控是針對上級接口!

二.****Sentinel 流控效果

此處的效果測試未状,均采用 閾值類型:QPS俯画、流控模式:直接析桥。

1.****直接

直接失敗司草,拋出異常,不做任何額外處理泡仗,是最簡單的方式埋虹。

image.png
image.png

2.****Warm Up

從開始閾值,到最大QPS閾值會有一個緩沖階段娩怎, 一開始的閾值是最大QPS閾值的1/3搔课,然后緩慢增長,直到最大閾值截亦,適用于突然增大的流量轉(zhuǎn)化為緩步增長爬泥。 避免突然大流量造成服務(wù)器的宕機!

image.png

閾值最初為10崩瓤; 最初的處理請求數(shù)最大為:10/3=3袍啡; 在5s時間內(nèi),由3緩慢升為10却桶。

突然出現(xiàn)大量請求境输,不會直接進行實際處理蔗牡,會將請求預熱后在做處理!

3.****排隊等待

讓請求以均勻的速率通過嗅剖,單機閾值為每秒通過的請求數(shù)辩越,其余的排隊等待; 其次信粮,還可以設(shè)置一個排隊等待的超時時間黔攒,若請求在超時時間內(nèi)還未被處理甜熔,則會被丟棄义黎。

image.png

達到的目的: 勻速處理多個請求偷崩,而不是一開始超過閾值的請求直接失數虐取土砂!

image.png

設(shè)置 Jmeter 一個線程每秒鐘訪問倆次:
image.png
image.png

打印日志信息:
image.png

觀察發(fā)現(xiàn): 每秒鐘限定處理一個請求數(shù)积担。 但是jmeter每秒鐘發(fā)送2個請求懈万。 設(shè)置了延遲等待 500ms后呀忧,只有少數(shù)請求會進入降級辞友!

三.****Sentinel熔斷降級

image.png

· 平均響應(yīng)時間 (DEGRADE_GRADE_RT):當 1s 內(nèi)持續(xù)進入 N 個請求栅哀,對應(yīng)時刻的平均響應(yīng)時間(秒級)均超過閾值(count,以 ms 為單位)称龙,那么在接下的時間窗口(DegradeRule 中的timeWindow留拾,以 s 為單位)之內(nèi),對這個方法的調(diào)用都會自動地熔斷(拋出 DegradeException)鲫尊。注意Sentinel 默認統(tǒng)計的 RT 上限是 4900 ms痴柔,超出此閾值的都會算作 4900 ms,若需要變更此上限可以通過啟動配置項-Dcsp.sentinel.statistic.max.rt=xxx 來配置疫向。

· 異常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):當資源的每秒請求量 >= N(可配置)咳蔚,并且每秒異常總數(shù)占通過量的比值超過閾值(DegradeRule 中的 count)之后搔驼,資源進入降級狀態(tài)谈火,即在接下的時間窗口(DegradeRule 中的 timeWindow,以 s 為單位)之內(nèi)舌涨,對這個方法的調(diào)用都會自動地返回糯耍。異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%囊嘉。

· 異常數(shù) (DEGRADE_GRADE_EXCEPTION_COUNT):當資源近 1 分鐘的異常數(shù)目超過閾值之后會進行熔斷温技。注意由于統(tǒng)計時間窗口是分鐘級別的,若 timeWindow 小于 60s扭粱,則結(jié)束熔斷狀態(tài)后仍可能再進入熔斷狀態(tài)舵鳞。

1、RT 平均響應(yīng)時間

1焊刹、如果請求的平均響應(yīng)數(shù)超過閾值(ms)系任,則會進入準降級狀態(tài)恳蹲。 2、如果接下來1s內(nèi)持續(xù)進入5個請求俩滥,他們的RT都持續(xù)超過了這個閾值嘉蕾,那么在接下來的時間窗口(s)內(nèi),就會對這個服務(wù)進行降級霜旧。 3错忱、RT默認最大為4900ms,如果需要更大挂据,可以通過 -Dcsp.sentinel.statistic.max.rt=xxx 進行配置以清。

image.png

配置案例: java代碼邏輯為:

image.png
image.png

先進行請求,然后sentinel中配置圖如下:
image.png
請求測試:

1崎逃、正常請求:
image.png

不會出現(xiàn)熔斷保護掷倔。 2、異常請求: http://localhost:8500/jiangji?name=1

image.png

熔斷保護時間內(nèi)个绍,請求正常流程:
image.png
保護時間過后勒葱,在請求正常流程:
image.png
image.png

[總結(jié)]

1、配置熔斷保護的接口巴柿,如果不出現(xiàn)超時情況時凛虽,不會觸發(fā)熔斷保護降級。 2广恢、當設(shè)定RT為400ms后凯旋,請求異常流程,1s內(nèi)平均請求響應(yīng)都超時并達到對應(yīng)的數(shù)目(測試顯示5個)钉迷,會觸發(fā)熔斷保護至非,并保護10s(這個時間是時間窗口的配置)。 3篷牌、熔斷保護期間內(nèi)睡蟋,正常請求也會被熔斷踏幻、降級枷颊。 4、10s后该面,熔斷結(jié)束夭苗,會重新對請求響應(yīng)時間進行統(tǒng)計判斷。

2隔缀、異常比例數(shù)

每秒的異程庠欤總數(shù),占通過量的比值超過配置的值之后猾瘸,觸發(fā)熔斷降級界赔。 時間窗口和之前一樣丢习,屬于熔斷保護時間。 占的比值數(shù)范圍為:[0.0,1.0]淮悼;

代碼案例:

image.png

暫時未配置時咐低,當請求數(shù)每次達到 a % 2== 0時,就會產(chǎn)生異常:

image.png

配置Sentinel袜腥,使得其具備熔斷降級的策略:
image.png

由于 a % 2 == 0觸發(fā)異常见擦,也就是說異常比例為 1/2。只需要配置的數(shù)小于 1/2即可羹令。

image.png

請求測試:

image.png

正常緩慢請求時鲤屡,依然和之前一致,出現(xiàn)報錯信息福侈。 當請求異常比例大于等于配置數(shù)時酒来,出現(xiàn)熔斷降級。

image.png

3肪凛、異常數(shù)

資源 1分鐘 內(nèi)的異骋凼祝總數(shù)超過限定的閾值,觸發(fā)熔斷降級显拜!

設(shè)定異常數(shù)為3衡奥,表示一分鐘請求的異常出現(xiàn)了3個及以上,觸發(fā)熔斷降級远荠!

[注意]此處有坑矮固!

由于異常數(shù)是按照分鐘統(tǒng)計的個數(shù),時間窗口中的設(shè)置也必須要大于60s譬淳。 不然會出現(xiàn):結(jié)束熔斷保護后仍可能繼續(xù)熔斷保護(不會釋放档址!)

請求測試:

當請求出現(xiàn)異常的次數(shù)達到設(shè)定的值時,立馬出現(xiàn)熔斷降級現(xiàn)象邻梆。
image.png

當熔斷保護的時間過了之后守伸,釋放,再次請求會重新進行統(tǒng)計浦妄!
image.png

四****尼摹、Sentinel熱點規(guī)則

熱點參數(shù)流控規(guī)則。

何為熱點:

熱點即經(jīng)常訪問的數(shù)據(jù)剂娄。

熱點限流的思想是什么蠢涝?

假設(shè)某一時間段內(nèi)的某個用戶頻繁的去訪問,就可以采取熱點規(guī)則方式阅懦,對其進行限流操作和二。

1、初級配置和測試

案例測試:

image.png

當不配置任何規(guī)則時耳胎,此時的回執(zhí)信息為:

image.png

配置Sentinel中的熱點規(guī)則屬性惯吕。
image.png

當請求地址攜帶p1參數(shù)惕它,且每秒鐘的請求數(shù)高于配置的1次時,觸發(fā)降級废登。

請求測試:

1怠缸、不攜帶參數(shù),快速點擊

image.png

2钳宪、攜帶參數(shù)揭北,但不攜帶p1,快速點擊

image.png

3吏颖、攜帶p1參數(shù)搔体,緩慢點擊

image.png

4、攜帶p1參數(shù)半醉,快速點擊

image.png

高級配置

針對個別用戶頻繁訪問時疚俱,采取了限流操作(按照參數(shù)接受類型,但不是具體的數(shù)值)缩多。 但是呆奕,針對管理員頻繁的訪問查看或測試數(shù)據(jù)時,此時不應(yīng)限流衬吆。

配置項:

達到的目的梁钾,當p1為520時,限流量放大逊抡!

image.png
image.png

請求測試:

1姆泻、緩慢請求,p1非特定值
image.png

2冒嫡、快速請求拇勃,p1非特定值
image.png

3、緩慢請求孝凌,p1為特定值
image.png

4方咆、快速請求,p1為特定值(每秒請求大于3才觸發(fā)限流)

image.png
image.png
image.png

Sentinel系統(tǒng)自適應(yīng)限流

之前的配置操作蟀架,采取的是針對單個請求地址瓣赂、請求別名進行配置的限流操作,sentinel同時也提供了一種很潮流的方式實現(xiàn)配置操作—系統(tǒng)自適應(yīng)限流辜窑。

何為系統(tǒng)自適應(yīng)限流钩述?

Sentinel 系統(tǒng)自適應(yīng)限流從整體維度對應(yīng)用入口流量進行控制,結(jié)合應(yīng)用的 Load穆碎、CPU 使用率、總體平均 RT职恳、入口 QPS和并發(fā)線程數(shù)等幾個維度的監(jiān)控指標所禀,通過自適應(yīng)的流控策略方面,讓系統(tǒng)的入口流量和系統(tǒng)的負載達到一個平衡,讓系統(tǒng)盡可能跑在最大吞吐量的同時保證系統(tǒng)整體的穩(wěn)定性色徘。

系統(tǒng)自適應(yīng)限流

文檔中恭金,對系統(tǒng)自適應(yīng)限流有如下幾種配置:
image.png

閾值類型的含義如下所示:

· Load 自適應(yīng)(****僅支持Linux/Unix-like****) 系統(tǒng)的 load1 作為啟發(fā)指標,進行自適應(yīng)系統(tǒng)保護褂策。當系統(tǒng) load1 超過設(shè)定的啟發(fā)值横腿,且系統(tǒng)當前的并發(fā)線程數(shù)超過估算的系統(tǒng)容量時才會觸發(fā)系統(tǒng)保護(BBR 階段)。系統(tǒng)容量由系統(tǒng)的 maxQps * minRt 估算得出斤寂。設(shè)定參考值一般是 CPU cores * 2.5耿焊。(系統(tǒng)核心數(shù)*2.5)

· CPU usage(****1.5.0+ 版本****) 當系統(tǒng) CPU 使用率超過閾值即觸發(fā)系統(tǒng)保護(取值范圍 0.0-1.0),比較靈敏遍搞。

· 平均 RT 當單臺機器上所有入口流量的平均 RT 達到閾值即觸發(fā)系統(tǒng)保護罗侯,單位是毫秒。

· 并發(fā)線程數(shù) 當單臺機器上所有入口流量的并發(fā)線程數(shù)達到閾值即觸發(fā)系統(tǒng)保護溪猿。

· 入口 QPS 當單臺機器上所有入口流量的 QPS 達到閾值即觸發(fā)系統(tǒng)保護钩杰。

配置案例: 配置入口QPS

image.png

只配置 QPS 項,其他流控模式未配置诊县。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載讲弄,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末依痊,一起剝皮案震驚了整個濱河市垂睬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抗悍,老刑警劉巖驹饺,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缴渊,居然都是意外死亡赏壹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門衔沼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝌借,“玉大人,你說我怎么就攤上這事指蚁∑杏樱” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵凝化,是天一觀的道長稍坯。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么瞧哟? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任混巧,我火速辦了婚禮,結(jié)果婚禮上勤揩,老公的妹妹穿的比我還像新娘咧党。我一直安慰自己,他們只是感情好陨亡,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布傍衡。 她就那樣靜靜地躺著,像睡著了一般负蠕。 火紅的嫁衣襯著肌膚如雪蛙埂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天虐急,我揣著相機與錄音箱残,去河邊找鬼。 笑死止吁,一個胖子當著我的面吹牛被辑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敬惦,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼盼理,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俄删?” 一聲冷哼從身側(cè)響起宏怔,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畴椰,沒想到半個月后臊诊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡斜脂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年抓艳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帚戳。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡玷或,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出片任,到底是詐尸還是另有隱情偏友,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布对供,位于F島的核電站位他,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棱诱,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一泼橘、第九天 我趴在偏房一處隱蔽的房頂上張望涝动。 院中可真熱鬧迈勋,春花似錦、人聲如沸醋粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽米愿。三九已至厦凤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間育苟,已是汗流浹背较鼓。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留违柏,地道東北人博烂。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像漱竖,于是被迫代替她去往敵國和親禽篱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348