导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
下载sentinel
sentinel-dashboard-1.6.2
用Dos命令行启动sentinel服务
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=127.0.0.1:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.6.2.jar
在内容中心content-certer配置文件中配置sentinel地址
sentinel: transport: dashboard: 127.0.0.1:8080 #指定sentinel控制台的地址
打开sentinel开始画界面
http://127.0.0.1:8080/#/login
流控规则
资源名:不一定是路径,只是唯一的名称
针对来源:针对的是哪个微服务
流控模式:
直接:当该API达到阈值就会直接触发流控效果
关联:
当关联资源中的API达到阈值,资源名中的API就会触发流控效果,当关联资源达到阈值,就限流自己
链路:
只记录指定链路上的流量
新建一个service
@SentinelResource("common")
控制器中调用该service
点击test-a中的common进行流控
入口资源写test-a
当test-a达到阈值就会别限流触发流控效果,而test-b不会。
流控效果:
快速失败:直接失败,抛异常
Warm UP(预热):根据codeFactor(默认3)的值,从阈值/codeFactor,经过预热时长,才达到设定好的QPS阈值。eg:(阈值=100;预热时长=10s)=>最初的阈值为100/3,经过十秒后慢慢爬升到100;适用于秒杀场景,允许通过的流量缓慢增加。
排队等待:匀速排队,让请求以均匀的速度通过,阈值类型必须是QPS,
eg:(阈值=100,超时时间=500),当API达到阈值一秒被访问100次后,后面的请求会进行排队等待,等待时间为500s,超过500s,这次排队的请求就会挂掉。