簡述
這也是一種限流的插件和Rate Limiting相似,但是有一定的區別。Response Rate Limiting是由後端服務控制頻率的減少,而Rate Limiting是由Kong完成的。
操作起來
環境準備
你應該有一個能正常使用的service和route,如果沒有可以參考https://blog.csdn.net/u014686399/article/details/100084613,我的試驗就是基於這個的
啓用插件
/routes/1972af43-5cb0-4c84-b15e-b96a2da52893/plugins POST
{
"name":"response-ratelimiting",
"config":{
"limits":{
"xmm":{
"day":10
}
}
}
}
- 1972af43-5cb0-4c84-b15e-b96a2da52893 這是route的id
- response-ratelimiting 插件的名字
- xmm 這個是自定義的, 限制的名字
- day這是表示這個路由一天能被訪問10次。具體還可以按照分鐘,秒,小時,年等官網
插件的說明
如果路由或者服務上沒有應用認證的插件(如base-auth,key-auth),kong會議client ip的維度統計。如果應用可會以consumer的維度統計。
後端服務改造一下
默認後端服務會接收到 X-Ratelimit-Remaining-Xmm 請求頭,表示還有剩餘多少次訪問,其中Xmm
是我們定義的limit的名字。我們可以設置X-Kong-Limit
作爲迴應,表示在剩餘值的基礎上減少多少。如 X-Kong-Limit: XMM=2,表示減少2;X-Kong-Limit: XMM=0,表示不減少;
下面是我的代碼:
def get(self):
self.print_header()
self.set_header("X-Kong-Limit", "xmm=2") #重點部分
self.render("index.html")
測試一下
圖中表示,剩餘值設置的是20,現在還剩8次
我再點擊8次
先寫到這裏了,有問題進QQ羣630300475