Sentinel是一个面向分布式架构的轻量级服务保护框架,实现服务降级、服务熔断、服务限流等功能
比如当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备选方案
当某个服务出现问题,卡死了,不能让用户一直等待,需要关闭所有对此服务的访问,然后调用服务降级的方法并返回友好提示
限流,比如秒杀场景,不能让用户瞬间都访问服务器,限制一次只可以有多少请求
QPS:每秒钟的请求数量,当调用该api的QPS达到阈值的时候,进行限流
线程数:服务端的处理请求的线程超过阈值的时候,就报错
例子:a请求过来,处理很慢,在一直处理,此时b请求又过来了此时因为a占用一个线程,此时要处理b请求就只有额外开启一个线程那么就会报错
3、异常次数:(分钟统计)超过阈值时,触发降级,时间窗口结束后,关闭降级
一分钟之内,有5个请求发生异常,进入熔断
2. 按照Url地址限流:资源名,是以url指定
3. 自定义限流处理逻辑
第一步:单独创建一个类,用于处理限流
第二步:在controller中,指定使用自定义类中的方法作为降级方法
fallback:用于管理异常的,当业务方法发生异常,可以降级到指定方法
blockHandler:只对sentienl定义的规则降级
fallback和blockHandler都配置呢?
当两个都同时生效时,blockhandler优先生效
1. 是什么:一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化
2. 怎么存储:将限流配置规则持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台的流控规则就能看到,只要Naeos里面的配置不删除,针对8401上sentinel上的流控规则持续有效
3. 配置步骤:
(1):我们的规则要保证在哪个名称空间的哪个分组下
(2):在nacos中创建一个配置文件,dataId就是上面配置文件中指定的
==json中,这些属性的含义:==
resource:资源名称;
limitApp:来源应用;
grade:阈值类型,0表示线程数,1表示QPS;
count:单机阈值;
strategy:流控模式,0表示直接;1表示关联,2表示链路;
controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待;
clusterMode:是否集群。