Sentinel官网文档
Sentinel是什么?
分布式系统的流量防卫兵。以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性
Sentinel跟Hystrix对比
1. 根据官网引入Sentinel核心库
1.1 整合SpringCloudAlibaba
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
1.2 application.yml
server:
port: 8050
spring:
application:
name: sentinel-dome
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8081 #sentinel客户端地址
2. 新建接口、新建规则
代码写法参考官网文档
2.1 @SentinelResource使用
是为了改善接口中资源定义和被流控降级后的处理方法
降级、熔断等各种写法按照官网中例子写即可
2.2 链路流控需要注意的点:
需要关闭默认的链路收敛,否则链路流控无法生效,没有维护链路
spring:
cloud:
sentinel:
web-context-unitf: false #默认链路收敛打开 需要关闭链路流控才会生效
2.3 Warm Up(预热)
不常用的数据突然大批量请求,缓存中或许已经过期,通过预热限制每次请求通过的值,缓解数据库的压力,每次查询数据库后存放到缓存中,当再次查询的时候可以减少数据库的压力
2.4 匀速排队(脉冲流量)
通过限制每次请求通过的值,设置超时时间,例每五秒通过500QPS,1000QPS涌入时处理500剩下的500在空闲时段处理
2.5 热点参数流控
通过设置参数值设置热点参数的流控规则,例如参数为int型参数值为1的请求一秒钟访问超过2次将会限流,而其他的一秒钟可以访问十次
2.6 nacos持久化流控规则
需要在配置文件中指定DataID指定nacos上的配置 #
当在sentinel控制台中修改了对应的流控规则,nacos那边是不会同步的 #
3. 控制台部署
3.1 控制台启动 控制台配置官方文档
java -Dserver.port=8081 -Dsentinel.dashboard.auth.username=wanfeng -Dsentinel.dashboard.auth.password=123456 -jar sentinel-dashboard-1.8.6.jar
-Dserver.port=8081 # 指定sentinel控制台端口号
-Dsentinel.dashboard.auth.username=wanfeng # 指定sentinel用户名
-Dsentinel.dashboard.auth.pawword=123456 # 指定sentinel密码
4. OpenFeign 整合 Sentinel 参考OpenFeign篇
4.1 添加依赖以及配置
# 添加openfeign依赖
# 添加nacos依赖
# 配置文件开启整合
feign:
sentinel:
#openfeign整合sentinel
enable: true