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接口

相关推荐
azoon.top6 天前
springcloud集成gateway
微服务·gateway·springcloud
power-辰南9 天前
微服务限流策略与性能优化全解析
性能优化·sentinel·springcloud·流量监控·流量治理
LUCIAZZZ10 天前
@Transational事务注解底层原理以及什么场景事务会失效
java·数据库·spring boot·mysql·spring·springcloud
代码轨迹14 天前
feign Api接口中注解问题:not annotated with HTTP method type (ex. GET, POST)
springcloud
潜水阿宝23 天前
微服务网关鉴权之sa-token
java·spring boot·微服务·gateway·springcloud
Mr.Demo.1 个月前
[Spring] OpenFeign的使用
java·后端·spring·springcloud
半旧5181 个月前
cursor重构谷粒商城05——docker容器化技术快速入门【番外篇】
spring·docker·容器·重构·springcloud·cursor·谷粒商城
Mr.Demo.1 个月前
[Spring] Nacos详解
java·后端·spring·微服务·springcloud
DanceDonkey1 个月前
@LoadBalanced注解的实现原理
rpc·springcloud·resttemplate·客户端负载均衡
xiaolin03331 个月前
RabbitMQ确保消息可靠性
微服务·rabbitmq·springcloud·可靠性