您好,登錄后才能下訂單哦!
今天小編給大家分享一下GS Admin限流功能怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
倉庫
giee: gitee.com/kevn/gsadmin/tree/master
github: github.com/sonhineboy/gsadmin
說明
在日常網站的運營過程種,當并發數達到我們服務的閾值的時候,我們可以通過限流的方式保證服務可用性。
常見的限流方法:
1. 使用帶緩沖的 chann,當 chan 塞滿以后,拒絕服務或者給一個友好的提示或跳轉到一個友好的頁面等。
2. 計數器,在 10 秒內只接受 100 請求,當超過 100 請求后,拒絕服務,當超過 10 秒后,計數歸零,重新接受請求。
3. 使用 httpserver 的頻率限制,無需自己實現。
4. 令牌桶算法:以恒定的速度往令牌桶中放入令牌,當有請求過來則從令牌桶中獲取令牌進行后續請求,當獲取令牌失敗后則進行友好處理。
5. 漏桶算法:請求先進入到漏桶里,而漏桶以固定的速率處理請求,當請求數量超過漏桶的容量時,將超出的請求進行友好處理,不適合突發請求場景。
上面兩種令牌的算法區別:漏桶算法,能夠強行限制傳輸速率,令牌桶算法:能夠限制平均傳輸速率,允許某種突發情況。
GS Admin 限流方式
GS Admin 采用 golang 內部有一個非常好用的限流器 time/rate 位于 golang.org/x/time/rate 具體的用法可以產靠官方文檔。GS Admin 已經封裝了 web 中間件只需要在配置文件配置想應得參數就可以了
rate:
limit: 15 //每秒產生得令牌數量
burst: 2 //令牌得大小
經過測試如果超過了限流,中間件就會觸發,代碼如下
func Limiter() gin.HandlerFunc {
return func(c *gin.Context) {
if global.Limiter.Allow() == false {
global.Response{}.Failed(c, "當前請求過快,請稍后再試!")
c.Abort()
return
}
c.Next()
}
}
以上就是“GS Admin限流功能怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。