Sentinel熔断与限流

一、流量规则:
单机阈值:设置访问次数
1、QPS: 代表每秒访问流速(次数)
2、并发线程数: 代表每秒处理的事务数,如果出现该时间段处理的事务数处理不过来就降级
高级选项:
QPS流控模式【直接】-流控效果【快速失败】:代表当不符合设置的流量规则,直接失败
QPS流控模式【直接】-流控效果【WarmUp预热 】:多用于平时无访问量,突然服务访问流量增大的情况,给该服务一个预热的流量规则。
计算规则为:开始的流量数是【设置的单机阈值 / 3】若超过则失败 coldFactor默认为3,可更改以下为源码处
在这里插入图片描述
接着根据设置的预热时长,当过了该预热时长后,便根据设置的单机阈值进行限流若超过则失败,该模式属于限流冷启动好处在于当访问量突然增大时不会导致服务崩溃。
QPS流控模式【直接】-流控效果【排队等待】: 设置的超时时间,即使超出流量规则也不会失败,只要在超时的时间内全部完成,但若是在超时的时间内没有完成就会失败。
因为流控效果和其他的流控模式结合起来都差不多意思,就不在一 一展示了,接下来是各个的流控模式。
QPS流控模式【关联】-流控效果【快速失败】:
首先什么是关联:当关联的资源达到阈值时,就限流自己,当与A关联的资源B达到阈值后,就限流自己,B惹事,A挂了
在这里插入图片描述
QPS流控模式【关联】-流控效果【WarmUp预热】:也就是位置调换,B的流量先从
【设置的单机阈值 / 3】 若B访问流超过则A服务调用失败, 当预热时间到了后根据设置的单机阈值进行限流,同样若B超过限流数则A服务失败。
QPS流控模式【关联】-流控效果【排队等待】:也如上相同意思,反正就是B超出,A失败
流控模式【链路】
对于线程类型只有流控模式,没有流控效果,其效果意思与上相同

二、熔断规则
2.1 慢调用比例:1.8之前的RT变更为现在的慢调用比例,比之前多个一个比例阈值。 以下的设置的规则意思为在统计时长里(1s)请求数大于5(最小请求数)时,失败比率不能大于50%(比例阈值),而失败的条件为处理时长不能超过3s(最大RT,默认为4900ms,如果超过默认以4900ms计算),若失败比率大于50%则服务熔断,熔断时长为300ms
在这里插入图片描述
2.2异常比例:
以下意思代表: 当一秒内的请求大于5时,则开始统计比例阈值,也就是失败率(程序异常、运行异常等),当超过50%的失败率时则熔断。熔断时长为1000ms
在这里插入图片描述
2.3异常数:
以下的意思代表:当一秒内请求数超过5个,则失败次数不能超过5次,若超过则熔断,注意的是异常数的熔断时长是以分钟开始的也就是最少一分钟,如果小于一分钟则有可能熔断恢复后又熔断
在这里插入图片描述
三、热点规则:
多用于根据参数进行限流,也就是对对应的参数进行限流,比如一个查询方法中,有多个参数,一个参数代表查询衣服,一个参数代表查询图书,衣服的访问量通常比较大,而图书访问量不大,如果使用通常的限流方式,则可能会造成导致图书的访问查询也失败,因此这时候就需要用到热点规则了。
在这里插入图片描述
在这里插入图片描述
如上图所示我们对p1参数进行了流控设置,如果只传p2参数则不会被流控限制,但只要传了p1参数就会被流控监控。
在热点规则中还有一个高级选项,也就是对p1的值进行特殊的流控设置,比如某个衣服类型有特殊的流控限制,因此我们就需要这个设置,但这个高级设置要先创建了热点规则才能出来
在这里插入图片描述
如上图所示,我们需要设置指定的参数类型,设置了特殊的参数值,也就是当参数值为polo杉时流控可以一秒200次请求。
并且使用热点规则时必须指定这个@SentinelResource注解

四、系统规则:
系统规则代表大门看守,只要不满足系统规则,即使满足设置的请求的规则都会失败
在这里插入图片描述
如上图所示,我们相当于设置了在服务下的所有访问请求都只能一秒一个请求,超过就失败。

五、@SentinelResource注解
该注解相当于hystrix的@HystrixCommand,该注解不支持private方法,注解有三个常用的属性
5.1 blockHandler兜底方法,处理Sentinel定义的规则失败
5.2 fallback 兜底方法,处理java代码异常的失败
5.3 fallbackClass 兜底方法所在的类,用于解决兜底方法的解耦性
5.4 value 表示定义一个该访问请求方法的别名
5.5CircleBreakerController 指定当出现什么问题时,可以跳过,不熔断
注意如果blockHandler和fallback 都使用的话,出现限制流控的失败则会由blockHandler处理,java异常则由fallback处理。当出现java异常并且流控规则不符的时候,走blockHandler兜底方法
兜底方法的参数要与请求方法的参数一致。java异常要抛出,才能走fallback兜底方法。
哪里调用,就在哪里开启兜底方法,不能跨微服务使用。
在这里插入图片描述
对于openFeign的服务降级里:
8401服务提供者
在这里插入图片描述
84消费者接口:
在这里插入图片描述
实现类:
在这里插入图片描述
需要注意的是,如果8401抛出了异常,并且有兜底方法,那么就会走8401中的兜底方法,而不会走84消费者处理的全局兜底方法,若8401写了兜底方法没有抛出异常,那么就走84消费者的兜底方法。
启用openFeign还需要在主启动类上加上@EnableFeignClients这个注解,而ribbon+RestTemplate不用。

六、规则持久化:
Sentinel设置的流控规则是临时的,也就是给一个服务设置流控规则后,当这个服务断开连接后,那么设置的流控规则也会消失,解决办法就是将规则绑定到nacos服务中心中。
实操:
一、引入jar包
在这里插入图片描述
二、修改yml配置文件
在这里插入图片描述
三、接着在nacos新增配置文件
在这里插入图片描述
在这里插入图片描述
这样当你关掉服务,再启动时,会自动从Nacos中获取流控规则添加到Sentinel中,这样就能保证持久化。如果一启动没有,那就稍等一会或者先访问一会。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sentinel熔断降级限流是一种用于保护应用程序的机制,它可以防止应用程序不断执行可能失败的操作,并快速拒绝可能导致错误的调用。熔断降级规则是熔断降级机制的核心属性之一。\[1\] 熔断降级规则的配置可以通过在应用程序中设置相关属性来实现。例如,在Spring Cloud中,可以通过配置`spring.cloud.sentinel.transport.dashboard`属性来指定Sentinel控制台的地址,以及通过`management.endpoints.web.exposure.include`属性来开放管理端点。\[2\] 熔断降级机制的作用是在感知到下游服务的资源出现不稳定状态时,暂时切断对下游服务的调用,而不是一直阻塞等待服务响应。这样可以防止级联失败导致的雪崩效应,并保证系统的可用性。在微服务架构下,熔断降级机制尤为重要,可以保护后端不会过载。\[3\] 熔断降级规则包含一些核心属性,可以根据具体需求进行配置。这些属性包括但不限于超时时间、异常比例、最小请求数等。当资源被熔断降级后,在降级时间窗口内,对该资源的调用会自动返回降级数据。当检测到该节点的服务调用响应正常后,熔断机制会恢复调用链路。\[3\] 总结来说,Sentinel熔断降级限流是一种保护应用程序的机制,通过设置熔断降级规则来防止应用程序执行可能失败的操作,并在下游服务资源不稳定时暂时切断对下游服务的调用。这样可以防止级联失败导致的雪崩效应,并保证系统的可用性。熔断降级规则包含一些核心属性,可以根据具体需求进行配置。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [sentinel 限流熔断神器详细介绍](https://blog.csdn.net/a745233700/article/details/122733366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Sentinel服务流控、熔断和降级](https://blog.csdn.net/m0_49183244/article/details/124273538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值