手把手带你领略双十一背后的核心组件Sentinel之流控规则
文章目錄
- 1、Sentinel相關概念的介紹
- 1.1、什么是流控規則?{1.1、什么是流控規則?}1.1、什么是流控規則?
- 1.2、什么是QPS?{1.2、什么是QPS?}1.2、什么是QPS?
- 1.3、什么是線程數?{1.3、什么是線程數?}1.3、什么是線程數?
- 2、流控模式
- 2.1、直接{2.1、直接}2.1、直接
- 2.1.1、選擇閾值類型為QPS{2.1.1、選擇閾值類型為QPS}2.1.1、選擇閾值類型為QPS
- 2.1.2、選擇閾值類型為線程數{2.1.2、選擇閾值類型為線程數}2.1.2、選擇閾值類型為線程數
- 2.2、關聯{2.2、關聯}2.2、關聯
- 2.3、鏈路{2.3、鏈路}2.3、鏈路
- 3、流控效果
- 3.1、快速失敗{3.1、快速失敗}3.1、快速失敗
- 3.2、WarmUp{3.2、Warm Up}3.2、WarmUp
- 3.3、排隊等待{3.3、排隊等待}3.3、排隊等待
1、Sentinel相關概念的介紹
1.1、什么是流控規則?{1.1、什么是流控規則?}1.1、什么是流控規則?
簡單了說就是流量控制(所謂的流量就是請求或者叫訪問)
1.2、什么是QPS?{1.2、什么是QPS?}1.2、什么是QPS?
每秒請求數,當API的QPS達到閾值時進行限流
1.3、什么是線程數?{1.3、什么是線程數?}1.3、什么是線程數?
當請求API的線程數達到閾值時進行限流
2、流控模式
2.1、直接{2.1、直接}2.1、直接
2.1.1、選擇閾值類型為QPS{2.1.1、選擇閾值類型為QPS}2.1.1、選擇閾值類型為QPS
連續刷新,當我間隔1s訪問時,訪問的是正常數據{連續刷新,當我間隔1s訪問時,訪問的是正常數據}連續刷新,當我間隔1s訪問時,訪問的是正常數據
連續刷新,當我間隔<1s時,會訪問到系統默認數據{連續刷新,當我間隔<1s時,會訪問到系統默認數據}連續刷新,當我間隔<1s時,會訪問到系統默認數據
2.1.2、選擇閾值類型為線程數{2.1.2、選擇閾值類型為線程數}2.1.2、選擇閾值類型為線程數
使用JMeter進行模擬并發測試
零基礎帶你入門JMeter-模擬高并發接口測試,小白教程!:https://blog.csdn.net/Kevinnsm/article/details/117302197?spm=1001.2014.3001.5501
2.2、關聯{2.2、關聯}2.2、關聯
首先先了解一下什么是關聯,所謂關聯就是一個接口依賴另外一個接口,當后者的資源達到閾值時,會發生限流,而這個限流是限制的前者。比如接口A依賴接口B,接口B的QPS達到閾值,然后會對A進行限流
為什么要這樣做呢?{為什么要這樣做呢?}為什么要這樣做呢?
這是為了保障那些非常重要的接口,如果某銀行的信息修改接口能和支付接口相比嗎?
使用postman模擬測試{使用postman模擬測試}使用postman模擬測試
2.3、鏈路{2.3、鏈路}2.3、鏈路
當從某個接口過來的資源達到限流條件時,開啟限流
比如我A接口和B接口同時調用同一個服務,如果A的QPS達到閾值就會對A進性限流,而B不會受任何影響{比如我A接口和B接口同時調用同一個服務,如果A的QPS達到閾值就會對A進性限流,而B不會受任何影響}比如我A接口和B接口同時調用同一個服務,如果A的QPS達到閾值就會對A進性限流,而B不會受任何影響
3、流控效果
3.1、快速失敗{3.1、快速失敗}3.1、快速失敗
這個快速失敗前面都使用過,就是當QPS或者線程數達到閾值時直接返回默認數據!
3.2、WarmUp{3.2、Warm Up}3.2、WarmUp
Warm Up主要應對這一種情況,服務器中的某個API平常沒人訪問,突然一下來了海量的請求,如果直接放進來,那系統就直接GG了;所以需要預熱,(比如我最開始處理QPS=3的訪問量,慢慢的經過10秒后,我能處理QPS=10的訪問量,就是這個意思,需要一定的時間預熱)
初始值怎么計算呢?比如上方這張圖,初始的QPS=9/3=3,經過五秒后能達到QPS=9,系統默認值是除以3.
3.3、排隊等待{3.3、排隊等待}3.3、排隊等待
所謂的排隊等待就是如果達到了閾值,那么其他的請求就在一邊排隊等著
上面我設置了QPS=1的閾值,也就是一秒只能一個請求;超過了就在那等著
然后從控制臺就可以看出一秒處理一個請求
總結
以上是生活随笔為你收集整理的手把手带你领略双十一背后的核心组件Sentinel之流控规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单几行代码带你快速了解淘宝双十一的强大
- 下一篇: 手把手带你领略双十一背后的核心技术Sen