gin实现限流中间件
·
在Go编写web类型应用时,我们为了防止用户去非法狂刷接口,从而使得服务器资源被大量占用,在此我们可以对对应用户进行限流操作,当在一段时间内,只允许对应的数量的用户去访问我们对应的服务,代码如下:
具体代码
//限流
func rateLimiter() gin.HandlerFunc {
//例如: 每秒产生1个令牌,最多存储10个令牌。
l:=rate.NewLimiter(1,10)
return func(c *gin.Context) {
//当没有可用的令牌时返回false,也就是当没有可用的令牌时,禁止通行
if !l.Allow() {
c.Abort()
}
//用可用的令牌时放行
c.Next()
}
}
更多推荐
所有评论(0)