Sentinel实现流控应用
Sentinel实现流控应用
1.安装并启动Dashboard控制台
1)依赖安装
需要openjdk1.8以上
yum install java-1.8.0-openjdk.aarch64
2)配置环境变量
需要设置JAVA_HOME变量
vim /etc/profile,增加如下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.ns7.01.aarch64/jre
让修改立即生效:source /etc/profile
3)官网下载Jar包
wget https://github.com/alibaba/Sentinel/releases/download/1.7.0/sentinel-dashboard-1.7.0.jar
默认下载目录/usr/local/src
4)启动控制台
cd /usr/local/src
java -jar sentinel-dashboard-1.7.0.jar
默认端口8080,开发端口8080
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
5)远程访问控制台
本地浏览器访问http://192.168.8.81:8080/#/dashboard/home进行登录,默认账号密码均是sentinel,进入首页
2.Sentinel实现直接限流
1)添加依赖
- 添加的spring-cloud-alibaba-dependencies和 spring-cloud-starter-alibaba-sentinel版本必须一致,且版本不能太低,否则可能获取不到控制台数据以及无法配置clientIp
2)添加配置
- 此处如果出现下面抓包的IP和本机IP不一致的情况需配置sentinel客户端的ClientIp为本地IP
3)限流埋点(自定义埋点)
4)创建快速失败的直接限流模式
访问本地8080端口
访问sentinel控制台
进入流控规则,添加QPS单机阈值为2的直接流控模式的快速失败限流规则
5)测试快速失败的直接限流模式
多次快速访问http://localhost:8088/waita,当QPS超过2时,直接返回以下错误
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Mon Aug 03 17:47:17 CST 2020
There was an unexpected error (type=Internal Server Error, status=500).
No message available
在sentinel控制台也能看到实时监控
3.Sentinel实现关联限流
1)添加依赖
2)添加配置
3)编写测试的控制器
编写两个接口用于测试,R1和R2
4)构建关联限流规则
启动应用,访问sentinel控制台http://192.168.8.81:8080/
新增直接失败的关联限流的流控规则
5)测试关联限流
下载Apache的压力测试工具ab.exe发送并发流量请求,使用压测工具发送并发流量超过QPS值大于1的流量给接口R2
同时访问R1接口会出现访问被阻止现象
而在sentinel控制台的实时监控会检测到访问R1接口的QPS被拒绝访问