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
Sentinel实现流控应用

默认端口8080,开发端口8080

firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --reload

5)远程访问控制台

本地浏览器访问http://192.168.8.81:8080/#/dashboard/home进行登录,默认账号密码均是sentinel,进入首页
Sentinel实现流控应用

2.Sentinel实现直接限流
1)添加依赖

  • 添加的spring-cloud-alibaba-dependencies和 spring-cloud-starter-alibaba-sentinel版本必须一致,且版本不能太低,否则可能获取不到控制台数据以及无法配置clientIp
    Sentinel实现流控应用

2)添加配置

  • 此处如果出现下面抓包的IP和本机IP不一致的情况需配置sentinel客户端的ClientIp为本地IP
    Sentinel实现流控应用

Sentinel实现流控应用

3)限流埋点(自定义埋点)
Sentinel实现流控应用

4)创建快速失败的直接限流模式

访问本地8080端口
Sentinel实现流控应用

访问sentinel控制台

Sentinel实现流控应用

进入流控规则,添加QPS单机阈值为2的直接流控模式的快速失败限流规则
Sentinel实现流控应用

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实现流控应用

在sentinel控制台也能看到实时监控

Sentinel实现流控应用

3.Sentinel实现关联限流
1)添加依赖

Sentinel实现流控应用

2)添加配置
Sentinel实现流控应用

3)编写测试的控制器

编写两个接口用于测试,R1和R2

Sentinel实现流控应用

4)构建关联限流规则

启动应用,访问sentinel控制台http://192.168.8.81:8080/

Sentinel实现流控应用

新增直接失败的关联限流的流控规则

Sentinel实现流控应用

5)测试关联限流

下载Apache的压力测试工具ab.exe发送并发流量请求,使用压测工具发送并发流量超过QPS值大于1的流量给接口R2

Sentinel实现流控应用

同时访问R1接口会出现访问被阻止现象
Sentinel实现流控应用

而在sentinel控制台的实时监控会检测到访问R1接口的QPS被拒绝访问

Sentinel实现流控应用