sentinel (哨兵) 简介
# 官网
- https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html#_spring_cloud_alibaba_sentinel
# github
- https://github.com/alibaba/Sentinel/wiki
# 简介
- 随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展业务,保障业务可靠性
linux 搭建 Sentinel Dashboard
-
下载最新的sentinel jar(sentinel-dashboard-1.8.3.jar)
https://github.com/alibaba/Sentinel/releases
-
sentinel-dashboard启动和停止脚本编写
# cd /usr/local/mysoft
# mkdir sentinel
将sentinel-dashboard-1.8.3.jar上传到目录/usr/local/mysoft/sentinel------------------- # sentinel-dashboard-1.8.3.jar是一个spring boot应用,可以通过java -jar直接启动(但不能后台运行) # java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.3.jar ------------------- # 在目录/usr/local/mysoft/sentinel下,编写启动和停止sentinel dashboard脚本 # mkdir logs # mkdir pid # touch startup.sh # touch shutdown.sh
-
startup.sh脚本
# vim startup.sh
# 启动Sentinel Dashboard服务脚本
nohup /usr/local/mysoft/jdk1.8.0_144/bin/java -Dlogging.file=/usr/local/mysoft/sentinel/logs/sentinel-dashboard.log -jar /usr/local/mysoft/sentinel/sentinel-dashboard-1.8.3.jar > /usr/local/mysoft/sentinel/logs/run.out 2>&1 &
echo $! > /usr/local/mysoft/sentinel/pid/runing.pid
- shutdown.sh脚本
PID=$(cat /usr/local/mysoft/sentinel/pid/runing.pid)
kill -9 $PID
find /usr/local/mysoft/sentinel/pid -name "*.pid" -exec rm -rf {} \;
find /usr/local/mysoft/sentinel/logs -name "*.out" -exec rm -rf {} \;
使用sentinel哨兵
创建一个spring boot服务cloud-04-sentinel
- 引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- sentinel(哨兵) 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>
- 配置文件
server:
port: 9004
spring:
application:
name: SENTINEL
# sentinel哨兵配置
cloud:
sentinel:
transport:
# 应用与Sentinel控制台交互的端口
port: 8719
# dashboard地址
dashboard: 192.168.110.66:8080
- 启动sentinel dashboard
# cd /usr/local/mysoft/sentinel
### 使用默认配置,java -jar启动(不能后台运行)
# java -jar sentinel-dashboard-1.8.3.jar
### 使用脚本startup.sh启动(后台运行)
# sh startup.sh
-
启动后,浏览器访问:http://192.168.110.66:8080
-
用户和密码默认都是:sentinel
-
需要调用应用接口,才会有信息
-
刷新sentinel dashboard页面
降级规则
资源名:接口路径
阈值类型:
QPS:query-per-sencond 每秒查询请求数
并发线程数:每秒发起的并发线程数
单机阈值:每秒限制的最大请求数,超过这个数,就会触发相应的降级规则
流控模式:
直接
关联
链路
流控效果:只有阈值类型为"QPS"才有
快速失败:
Warm up:
排队等待:
-
流控规则
图片待补充
例如阈值类型选的是:QPS,单机阈值为:2,代表每秒请求数超过2个,就会触发流控规则- 测试1
图片待补充- 阈值类型(QPS)、单机阈值(2)、流控模式(直接)、流控效果(快速失败)
- 向接口/sentinel/demo在1秒内连续发送请求,请求次数大于2,触发流控规则
图片待补充
- 测试2
- 阈值类型(QPS)、单机阈值(2)、流控模式(直接)、流控效果(快速失败)
- 向接口/sentinel/test在1秒内连续发送请求,请求次数大于2,触发流控规则,此时再访问/sentinel/demo时不可用
图片待补充
- 测试1