sentinel入门相关笔记(springcloud熔断器)
Posted learning_code_blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sentinel入门相关笔记(springcloud熔断器)相关的知识,希望对你有一定的参考价值。
hystrix
1、需要自己搭建监控平台
2、没有web界面进行配置 。 速率控制、服务熔断、服务降级
sentinel
1、单独一个组件,可以独立出来
2、直接界面化细粒度统一配置
约定>配置>编码
sentinel github 下载
服务雪崩、限流、服务降级、
安装:
启动:
java -jar sentinel-dashboard-xxx.jar
初始化:
port:8080
sentinel/sentinel
1、见model
2、改pom
pom
sentinel持久化:引入
sentinel-datasource-nacos
引入:sentinel
start-alibaba-sentinel
3、改properties
配置注册中心地址
配置sentinel地址
4、启动类
添加服务被发现@EnableDiscoveryClient
需要刷新之后才能在 界面看到服务被注册
官网:
https://github.com/alibaba/Sentinel/wiki/%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97#%E5%85%AC%E7%BD%91-demo
流控规则:
针对接口URL(资源)
设置类型:QPS(每秒查询数)、线程数(进入之后,限流线程数)
单机阈值:设置数量
高级设置
流控模式:
默认:
关联: 关联资源–比如 支付接口达到上限,下订单接口就限流 B惹事,A挂(postman测试)
链路:
流控效果:
快速失败:block by sentinel limit follower
Warm UP : 预热,给一定时间加载的相应的QPS。
(默认冷加载因子3,设置warmUp预热时长。比如:默认加载因子3,QPS给10、warmUP设置5 , 就是说 10/3 = 3 默认阈值 3 ,然后经过5s,慢慢达到阈值10)。抢购
排队等待:然请求以均匀的速度通过(漏桶算法),阈值类型必须是QPS,否则无效
(案例:主要处理间隔性突发的流量,例如消息队列,在某一秒有大量的请求到来,而接下来的几秒处于空闲状态,我们希望系统能够在接下来的空闲期间主键处理这些请求,而不是直接拒绝)
降级规则:
降级策略:
RT:平均响应时间(秒级),默认最大4900ms(更大需要自己设置-Dcsp.sentinel.statistic.max.rt = XXX).
每1s平均响应时间超出阈值、且 时间窗口内(控制台设置)通过请求数大于5 触发降级
异常比例(秒级):QPS>5 每秒且异常比例超过阈值,触发降级;时间窗口结束后,关闭降级(服务可用)。
异常数(分钟级):每分钟 超过阈值,触发降级,时间窗口>60结束,关闭降级(服务可用)
@HystrixCommand
@SentinelResource
热点规则:
BlockException 内部实现
demo:
@getMapXX("/testA") // rest地址
@SentinelResource(value=“testA”,blockHandler=“deal_testHotKey”) //添加sentinel,blockHandler不配置直接显示异常
public string testHotKey(String str ,String str2)
public String deal_testHotKey(String str ,String str2,BlockException blockException)
return “兜底方法”;
热点配置:
配置resource = testA 参数索引:0 统计窗口时长:
参数额外项:可以例如配置,针对单独的参数,可以另外设置
系统保护规则:
总的系统设置:
设置 load 、cpu 使用、RT、异常数 等
@SentinelResource(blockExhandler="",blockHandlerClass=XXx.class,blockHandler=“对应的方法名”)
规则之后,进行返回自定义名称
代码耦合、膨胀、默认的不能体现我们的业务逻辑
SpHU
Tracer
utitler
服务降级
openFeign
rabbion
@SentinelResource(fallback=“抛异常的的兜底方法”,blockHandler=“负责控制台违规操作的”)
// fallback 配置java异常 blockHandler 配置控制台异常
// exceptionIgore
整合rabbion
整合openFeign
yml配置–注意
feign.sentinel.enabled= true
@Feignclient(value=“XXX”,fallback=XXXFackBack.class)
服务调用使用
sentinel Hystrix 对比
隔离策略 信号量隔离 线程池隔离
熔断降级 响应时间、异常比例、异常数 异常比例
实时统计 滑动窗口
动态规则配置 支持多种数据源
扩展性 多个扩展点 插件形式
Sentinel 持久化
引入 sentinal-datasource-nacos pom
yml:
spring.cloud.sentinel.datasource:
ds1:
nacos:
server-add:localhost:8848
dataId:$spring.application.name
groupId:
data-typpe:json
rule-type:flow
nacos 中配置
新建dataid
以上是关于sentinel入门相关笔记(springcloud熔断器)的主要内容,如果未能解决你的问题,请参考以下文章
微服务Spring Cloud Alibaba之Sentinel篇,使用熔断器防止雪崩
微服务Spring Cloud Alibaba之Sentinel篇,使用熔断器防止雪崩