Sentinel

目录

控制台启动

服务提供模块

流控规则

流控模式

流控效果

熔断规则

慢调用比例

异常比例

异常数

@SentinelResource

局部限流处理

自定义全局类

热点规则

授权规则

系统规则

规则持久化

Sentinel整合OpenFeign


控制台启动

下载jar包

启动:java ‐jar sentinel‐dashboard‐1.8.0.jar

访问:http://localhost:8080/#/login,默认用户名密码: sentinel/sentinel

默认端口是8080,可以修改端口

服务提供模块

端口:10000、10001

1、引入依赖

2、yml


关于transport.port

1、端口配置会在被监控的微服务对应主机上启动 Http Server
2、该 Http Server 会与 Sentinel 控制台交互
3、比如sentinel控制台添加了一个限流规则,会把规则数据push给这个Http Server接收,Http Server再将这个规则注册到Sentinel中
简单地讲:transport.port指定被监控的微服务应用于sentinel控制台交互的端口

默认端口是8719,如果被占用了,会依次+1扫描,直到找到一个没有被占用的

流控规则

Sentinel采用懒加载,只有调用才能看到监控数据

QPS:每秒钟请求数量

线程:进行中的请求数量

流控模式

直接:限制自己,对自己添加规则

关联:A达到阈值,限制B,限制谁就给谁添加规则

链路:多个请求可以访问同一个目标,针对性限流,对目标添加规则

流控效果

**Warm up(预热):**流量很大,系统从空闲到繁忙切换时间长一些

coldFactor:冷加载因子,默认是3,QPS从QPS/clodFactor开始

比如QPS=9,预热时长为3,QPS从3开始

前3秒,QPS>3会报错

后3秒,QPS>3&&<=9是正常

**排队等待:**间隔性突发流量,匀速排队,阈值类型必须是QPS

不拒绝请求,依次执行,超过等待时间就超时

熔断规则

级联调用,不要线程堆积,快速返回结果

慢调用比例

慢调用: 某次请求的响应时间 > 最大RT

慢调用比例: 慢调用次数 / 总调用次数

进入熔断: 实际请求数目 > 最小请求书 慢调用比例 > 比例阈值

熔断完毕后,如果接下来的第一个请求的响应时间 < RT,则熔断结束,否则再次熔断

异常比例

异常数

@SentinelResource

如果Controller层的方法 或 限流处理类的方法是private,@SentinelResource就不会起作用

局部限流处理

按资源名称限流+自定义限流返回+服务降级处理

自定义全局类

必须都是静态方法

全局限流处理类

全局异常处理类

热点规则

参数必须是基本类型或者String

授权规则

白名单与黑名单

empower/test1,empower/test2会失败

系统规则

对所有的API接口进行保护,总数不超过系统最大QPS,使用入口QPS

规则持久化

1、引入依赖

2、yml


演示了流控规则

其他的规则rule-type:degrade,system,param-flow

规则种类-官方文档

Sentinel整合OpenFeign

目前:

服务提供模块(10000、10001)注册了Nacos、Sentinel

服务使用模块(81)注册了Nacos、OpenFeign

现在服务使用模块可以默认轮询执行提供模块的方法

对于服务提供模块,上面已经有了自己的全局异常类和全局限流类

对于服务使用模块,引入Sentinel,设置异常类

问题:

一开始能够正常轮询调用方法

如果一个正常,一个超时,会总是调用正常的模块(OpenFeign默认超时时间是1秒

两个都挂掉,81会出现超时(因为会缓存到本地)

过30s左右,会出现无法找到服务(因为会定时从nacos拉取服务)

两个都是异常信息,需要对81进行熔断降级

服务使用模块出现异常

一定是Service接口的方法出现问题,Service加fallback参数,自定义异常类实现接口
1、引入依赖

2、yml

3、Service接口

相关推荐
Cikiss15 小时前
微服务实战——购物车模块实战
java·开发语言·后端·spring·微服务·springcloud
陶然同学5 天前
【畅购商城】微信支付之支付回调和支付状态
java·mysql·微信·springcloud
陶然同学6 天前
【探花交友】day06—即时通信
java·开发语言·springcloud·项目·交友
微扬嘴角7 天前
springcloud篇2-feign、gateway
gateway·springcloud·feign
CYX_cheng7 天前
Gateway
springcloud
武子康12 天前
Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor
java·开发语言·后端·spring·springboot·springcloud
zfj32120 天前
SpringCloud微服务实战系列:03spring-cloud-gateway业务网关&灰度发布
spring boot·gateway·springcloud·webflux·灰度发布·业务网关
bohu8321 天前
idea启动时报错“类文件具有错误版本61.0,应为55.0”
java·ide·intellij-idea·springcloud
袁庭新25 天前
SpringCloudAlibaba学习路线:全面掌握微服务核心组件
分布式·springcloud·袁庭新·alibaba组件·微服务学习路线