插件方式引入Sentinel限流实战,对业务零侵入
1、前言
ali开源组件sentinel限流是一个非常不错的限流组件,适配了目前主流框架,像springcloud、dubbo这样的完美适配。如果通过再项目中引入jar包,会对业务有侵入,不太友好,本文简单案例实战通过agent插件的方式引入sentinel限流。
2、原理
用插件判断项目类型并引入相应jar包,加载相应限流配置即可。本文只用springboot做简单案例演示。
3、实现agent插件
核心代码:
这里写的测试接口是/h3
设置请求限流阻塞处理器。
WebCallbackManager.setUrlBlockHandler(new SentinelBlockHandler());
SentinelBlockHandler中写入限流信息
打包此插件(插件项目名笔者命名为learn)
4、写一个springboot测试接口
4.1 写一个接口/h3
4.2 启动方式
移入agent插件包
启动后日志:
4.3 测试结果
快速访问/h3接口,日志情况:
本示例设置的/h3的qps为1,所以1s内多次访问/h3接口 就会报限流异常
正常返回:
限流时打印信息: