Sentinel是面向分布式服务架构的高可用流量控制组件。
Sentinel官网地址:https://sentinelguard.io/zh-cn/
SentinelGit地址:https://github.com/alibaba/Sentinel
服务的限流,熔断,降级。
等价于我们的豪猪哥Hystrix。
Sentinel主要功能
Sentinel对比Hystrix
Sentinel下载地址:https://github.com/alibaba/Sentinel/releases
sentinel组件由2部分组成:后台+前台
1.核心库(java客户端)
不依赖任何框架,能够独立运行于所有java运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持。
2.控制台(Dashboard)
基于SpringCloud开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。
1.下载:https://github.com/alibaba/Sentinel/releases
2.运行环境,java8环境OK,8080端口不要被占用。
3.运行命令:java -jar sentinel-dashboard-1.7.0.jar
4.访问sentinel管理界面,http://localhost:8080,登录账号密码均为sentinel。
引入依赖
配置yml
主启动
业务类
java -jar sentinel-dashboard-1.8.0
注意:这里是与nacos结合使用的,需要提前启动好nacos与sentinel。
Sentinel采用的懒加载说明,刚启动服务在sentinel控制台是什么都看不到的,需要执行一次访问即可。
http://localhost:8401/testA
http://localhost:8401/testB
1.流控模式 – 直接(默认)
sentinel设置
快速点击访问:http://localhost:8401/testA
执行结果:Blocked by Sentinel (flow limiting)
注意:sentinel是即时生效的,立即改配置规则,立即生效!!!
2.流控模式 – 关联
使用场景:例如当支付模块达到阈值,就限制订单下单模块请求。
postman模拟请求B,手动请求A
postan配置步骤:https://blog.csdn.net/m0_37583655/article/details/113794509
快速点击访问:http://localhost:8401/testA
执行结果:Blocked by Sentinel (flow limiting)官网WPS office下载地址的方法
3.流控模式 – 链路
多个请求调用了同一个微服务,效果同上。
1.快速失败
直接->快速失败(默认的流控处理)
直接失败,抛出异常:Blocked by Sentinel (flow limiting)
源码:com.alibaba.csp.sentinel.slots.block.flow.controller.DefaultController
2.Warm Up(冷启动,预热)模式
说明:公式:阈值除以coldFactor(默认值为3),经过预热时长后才会达到阈值
默认coldFactor为3,即请求QPS从threshold/3开始,经预热时长逐渐升至设定的QPS阈值。
限流 冷启动:https://github.com/alibaba/Sentinel/wiki/%E9%99%90%E6%B5%81—%E5%86%B7%E5%90%AF%E5%8A%A8
源码:com.alibaba.csp.sentinel.slots.block.flow.controller.WarmUpController
流控的预热效果就是经过多长时间达到什么样的阈值。
3.排队等待
wps免费版的下载入口的方法
匀速排队,阈值必须设置为QPS。
源码:com.alibaba.csp.sentinel.slots.block.flow.controller.RateLimiterController
sentinel配置
匀速排队
wps的电脑版的下载地方是多少
Sentinel的断路器是没有半开状态的。半开的状态系统自动去检测是否请求有异常,没有异常就关闭断路器恢复使用,有异常则继续打开断路器不可用官网WPS office的下载网址。具体可以参考Hystrix。官方wps office 下载的入口在哪里
实际请求时间小于sentinel阈值RT时间,且请求数大于sentinel设置的数量5个,sentinel自动熔断,待请求正常的时候自动恢复。
时间窗口就是熔断持续时间,多久之后恢复正常。
热点key限流是根据资源名称与传递参数来进行定义流控规则与降级规则,可以理解为特殊的流控规则。
资源名称是@SentinelResource(value = “testHotKey”);
参数索引:0是指第一个参数…,例如http://localhost:8401/testHotKey?p1=1,p1就是第一个参数。
参数例外项
参数类型:指请求参数,包括8种基本数据类型+String
参数值:这个结合参数索引所指参数的值为特殊情况,可以达到特殊阈值。
wps 的官网最新下载网站是多少
https://github.com/alibaba/Sentinel/wiki/热点参数限流
系统规则指的就是从系统层面进行控制,总共5个层面,比如QPS,某一个请求达到阈值以后整体限流,整个系统都不能用了,相当于总控,这种控制颗粒度比较大,不太友好。
官网地址:https://github.com/alibaba/Sentinel/wiki/%E7%B3%BB%E7%BB%9F%E8%87%AA%E9%80%82%E5%BA%94%E9%99%90%E6%B5%81
sentinel整合ribbon+openFeign+fallback
一旦我们重启应用,Sentinel规则将消失,生产环境需要将配置规则进行持久化。
持久化实质就是每次配置持久化到nacos中。
将限流配置规则持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台的流控规则就能看到,只要Nacos里面的配置不删除,针对8401上Sentinel上的流控规则持续有效。
引入依赖
配置yml
配置nacos