sentinel 限流、熔断、降级
限流:为了用户体验,当流量超过了服务自身范围,拒绝超出的流量访问
熔断:系统在设计之初就把熔断措施考虑进去。当系统出现问题时,如果短时间内无法修复,系统要自动做出判断,开启熔断开关,拒绝流量访问,避免大流量对后端的过载请求。
降级:将系统的所有功能服务进行一个分级,当系统出现问题需要紧急限流时,可将不是那么重要的功能进行降级处理,停止服务,这样可以释放出更多的资源供给核心功能的去用。
example
package main import ( "fmt" sentinel "github.com/alibaba/sentinel-golang/api" "github.com/alibaba/sentinel-golang/core/base" "github.com/alibaba/sentinel-golang/core/flow" ) func main() { // 初始化 sentinel err := sentinel.InitDefault() if err != nil { panic(err) } // 配置限流规则 _,err = flow.LoadRules([]*flow.Rule{ { Resource: "some-test", Threshold: 10, // 10 个请求 StatIntervalInMs: 1000, // 1 秒之内 TokenCalculateStrategy: flow.Direct, // 规定时间内,只能有多少请求 ControlBehavior: flow.Reject, // 超出的流量全部拒绝 }, }) if err != nil { panic(err) } // 循环接收请求 for i := 0; i < 13; i++ { e,b := sentinel.Entry("some-test",sentinel.WithTrafficType(base.Inbound)) if b != nil { fmt.Println("限流了") } else { fmt.Println("正常通过") e.Exit() } } }

浙公网安备 33010602011771号