簡述
這個插件是限流使用的,如果我們後端服務扛不住前端的流量或者要防止某些人惡意的使用流量攻擊我們,可以考慮一下限流
操作起來
試驗準備
- 要有一個可用的service和route,如果沒有可以參照https://blog.csdn.net/u014686399/article/details/100084613,我的試驗也是基於這個的
啓用插件
/services/bd7a85b9-27e2-4f66-80cd-980976bdb4ff/plugins POST
{
"name":"rate-limiting",
"config":{
"second": 20
}
}
- bd7a85b9-27e2-4f66-80cd-980976bdb4ff 這是service的id
- rate-limiting這是插件的名字
- config是用來配置限流的程序, second是說每秒多少,插件還支持分鐘,小時,天,年等插件官網
插件說明
插件支持三種策略來記錄請求的頻率, 分別是local
,cluster
,redis
- cluster,這是默認的方式,也是在要求頻率控制精確的場景下,比較提倡的方式。這種方式把頻率都記錄在數據庫中,每次請求過來都要查一下數據庫,因此極大的影響了效率。我也簡單對比了一下:
啓用插件前:
啓用插件後:
- redis, 這種需要引入redis,把頻率記錄在redis裏面,每次請求過來都要查詢一下redis,性能肯定比cluster快,但是因爲引入redis,要考慮維護redis的成本
- local,在對精度要求不高的場景下,官方推薦這種方式,在性能和維護上都很不錯。如果是在DB-less的場景只能選擇redis和local了
測試一下
使用jmeter模擬大訪問量的場景:
當大流量的時候就會有429的返回碼
先寫到這裏了,有問題進QQ羣630300475