手把手带你领略双十一背后的核心技术Sentinel之服务的熔断降级
這種日子該到頭了{這種日子該到頭了}這種日子該到頭了
代碼來自:https://blog.csdn.net/Kevinnsm/article/details/117520719?spm=1001.2014.3001.5501
文章目錄
- 1、為什么要進行服務降級?{1、為什么要進行服務降級?}1、為什么要進行服務降級?
- 2、熔斷策略之慢調用比例{2、熔斷策略之慢調用比例}2、熔斷策略之慢調用比例
- 3、熔斷策略之異常比例{3、熔斷策略之異常比例}3、熔斷策略之異常比例
- 4、熔斷策略之異常數{4、熔斷策略之異常數}4、熔斷策略之異常數
1、為什么要進行服務降級?{1、為什么要進行服務降級?}1、為什么要進行服務降級?
現在的微服務架構是分布式的,由許多服務組成。服務之間的調用是錯綜復雜的,比如A調B,B調C,C調D等等;一旦某個模塊出現了問題,可能就會出現級聯效應,最終導致整個鏈路的不可用是。通過服務降級,將不穩定的服務進行熔斷降級,避免整個鏈路的雪崩。這個降級是配置在客戶端!
官網文檔地址:https://sentinelguard.io/zh-cn/docs/circuit-breaking.html
2、熔斷策略之慢調用比例{2、熔斷策略之慢調用比例}2、熔斷策略之慢調用比例
慢調用比例 (SLOW_REQUEST_RATIO):選擇以慢調用比例作為閾值,需要設置允許的慢調用 RT(即最大的響應時間),請求的響應時間大于該值則統計為慢調用。當單位統計時長(statIntervalMs)內請求數目大于設置的最小請求數目,并且慢調用的比例大于閾值,則接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求響應時間小于設置的慢調用 RT 則結束熔斷,若大于設置的慢調用 RT 則會再次被熔斷。
以上是官網提供的,經過我的分析需要滿足兩個條件就會進行服務熔斷降級!
1、請求的響應時間大于RT(設置的最大響應時間
2、單位統計時長內請求數目大于最小請求數目
實例分析
設置最大RT為200ms,意味著一旦請求響應超過這個時間就會被統計為慢調用,如果在統計時長1000ms內慢調用的數量大于了最小請求數5,則會進行服務的熔斷降級(熔斷時長為2s,過了兩秒后會進行進入探測狀態,若接下來的一個請求的響應時間小于RT,則結束熔斷;否則繼續進入熔斷狀態)
設置線程暫停1s,那么由于我上面設置的RT為0.2s,所以每次都會超時。100%會進行熔斷降級
使用JMeter進行測試
零基礎帶你入門JMeter-模擬高并發接口測試,小白教程!:https://blog.csdn.net/Kevinnsm/article/details/117302197?spm=1001.2014.3001.5501
開始測試
由于我設置的是一直循環訪問,所以可以得出只要不關閉JMeter,那么/good接口將一直處于熔斷狀態,怎么得出來呢?同時通過瀏覽器訪問
當結束JMeter,然后通過瀏覽器訪問
3、熔斷策略之異常比例{3、熔斷策略之異常比例}3、熔斷策略之異常比例
異常比例 (ERROR_RATIO):當單位統計時長(statIntervalMs)內請求數目大于設置的最小請求數目,并且異常的比例大于閾值,則接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%。
也就是滿足兩個條件就會發生熔斷降級
1、請求數大于設置得最小請求數目
2、異常得比例大于設置得閾值
如下圖分析
當在1000ms統計時長內,如果異常比例大于0.8,且請求數大于5,則進行熔斷降級
代碼模擬
@GetMapping("/good")public String good() {int a = 1 / 0;log.info("---------->"+Thread.currentThread().getName());return "good";}我故意將其1/0報異常!{我故意將其1/0報異常!}我故意將其1/0報異常!
使用JMeter測試
每次10個請求數,一直循環訪問{每次10個請求數,一直循環訪問}每次10個請求數,一直循環訪問
運行
從響應數據可以看出已經進入了熔斷狀態!
循環訪問過程中從瀏覽器進行訪問
當結束JMeter循環訪問,然后瀏覽器訪問,發現已經結束了熔斷狀態!
4、熔斷策略之異常數{4、熔斷策略之異常數}4、熔斷策略之異常數
異常數 (ERROR_COUNT):當單位統計時長內的異常數目超過閾值之后會自動進行熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。
1、單位統計時長內異常數超過設置的異常數閾值
2、請求數大于設置得最小請求數
如上圖所示,在1000ms內,如果異常數大于3,且請求數大于5;則發生熔斷降級!
JMeter進行測試,一直循環訪問
可以看出已經熔斷降級,當我停掉JMeter之后,瀏覽器訪問該API報出異常!
總結
以上是生活随笔為你收集整理的手把手带你领略双十一背后的核心技术Sentinel之服务的熔断降级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手带你领略双十一背后的核心组件Sen
- 下一篇: 手把手带你领略双十一背后的核心技术Sen