0%

gin 框架配合sentinel进行流量限制

一. 在服务启动的时候对 Sentinel 进行初始化:

1
2
3
4
5
6
7
8
9
10
import (
sentinel "github.com/alibaba/sentinel-golang/api"
)

func init() {
err := sentinel.InitDefault()
if err != nil {
log.Fatal(err)
}
}

二. 在 Gin 的初始化代码中引入 SentinelMiddleware:

1
2
3
4
5
6
import (
sentinelPlugin "github.com/alibaba/sentinel-golang/adapter/gin"
"github.com/gin-gonic/gin"
)

r := gin.New()

// Sentinel 会对每个 API route 进行统计,资源名称类似于 GET:/foo/:id

// 默认的限流处理逻辑是返回 429 (Too Many Requests) 错误码,支持配置自定义的 fallback 逻辑

r.Use(sentinelPlugin.SentinelMiddleware())

三. 配置流控规则。可以创建动态文件数据源,通过文件配置规则,或硬编码配置规则。