springcloud22:sentinal的使用

  • sentinal对比(分布式系统的流量防卫)
    监控保护微服务
    Hystrix 需要自己去手工搭建监控平台,没有一套web界面可以进行细粒度化的配置,流控,速率控制,服务熔断,服务降级…
    整合机制:sentinal
    单独一个组件可以独立出来,支持界面化的细粒度统一配置。配置+注解

  • sentinal的使用

  • 页面使用增加流控模式:

    • QPS:每秒请求数(访问多次则会报错)
      模式:直接快速失败:报错Blocked by Sentinel (flow limiting)
      此时一秒请求一次,不会出问题,一秒请求多次,会被限流
      在这里插入图片描述
      此时直接调用默认错误信息,我们如何改进?
    • 线程数(允许访问,但是只有一个线程可以处理)
      模式:直接快速失败
      此时线程数为1,即两个服务请求到,如果第一个请求还未被线程处理完成第二个请求就来,此时会报错在这里插入图片描述
    • 前两个流控模式都为直接模式
      流控模式更改为关联:即A与B关联,即B达到阈值,则A会被限制(支付接口达到阈值,限流下订单的接口)
      此时:快速访问B,而A报错Blocked by Sentinel (flow limiting)
      在这里插入图片描述
    • 前三个流控效果都为快速失败 流控模式为直接模式
      流控效果改为预热一开始 单击阈值为10/3(默认)=3,在经过预热时长5秒钟之后,再更改为阈值10(前五秒钟为3,后五秒钟为10)
      在这里插入图片描述
    • 流控效果:排队等待
      只允许一个一个的进来,每秒只处理一个,可以等待(请求以均匀的速度通过)
  • 页面增加降级规则:(sentinel熔断无半开状态)

    • RT:平均响应时间(超出阈值且时间窗口内通过的请求大于等于5),两个条件满足后触发降级
    • 异常比例:QPS大于等于5且异常比例超过阈值,触发降级
    • 异常数:异常数(分钟统计)超过阈值后,触发降级
      在这里插入图片描述
    • 举例:RT使用
      一秒钟五个请求平均响应时间>阈值且处理任务的时间大于阈值,触发降级,时间窗口期内不能用,时间窗口期过了之后,恢复。(以下例子为200ms以内处理完成,搞定就ok,搞不定未来一秒钟内降级,下一秒内不可用,过完一秒即可用)
      在这里插入图片描述
    • 举例使用异常比例
      一秒钟五个请求平均响应时间>阈值且处理任务的时间大于一秒内的异常比例超过阈值,则触发降级,时间窗口结束,关闭降级
      程序出错。单独访问直接报错500,如果一秒钟请求五次以上,达到降级,则直接报错Blocked by Sentinel (flow limiting)
    • 举例使用异常数:
      近一分钟的异常数超过阈值后进行熔断(时间窗口大于60s)
  • 热点key限流

    • 是什么?会统计传入参数中的热点参数,根据传递的参数来进行 限流@SentinelResource声明兜底方法
      在这里插入图片描述
      在这里插入图片描述
      配置完成后,如果第0个角标的参数访问时违背规则,然后降级,利用我们配置的兜底方法,即只要带参数第0个角标违背就降级,但是如果只带第二个参数随便访问
    • 参数例外项:希望设置的角标参数为特定值时有定制情况
      在这里插入图片描述
      如果第一个参数等于5时,限流阈值变为200
      注意:sentinelResource是控制台配置的错误,而runtimeexception没有兜底正常异常
  • 系统规则
    系统自适应限流:对应用的整体维度进行限流
    在这里插入图片描述

    • load:系统超过装载率
    • CPU使用率
    • 平均处理时间
    • 并发线程数
    • 全局QPS
  • @SentinelResource

    • 按资源名称限流(返回兜底方法)
      此时关闭服务,流控规则消失(临时流控规则)
      按URL限流(返回自带默认,不会走自己的handler)
      总结:因为注解中的value对应资源名,故资源名可以走默认方法而URL不会走自定义方法
      可以用资源名来配置流控,也可以用URL配置流控(不会走自定义兜底方法),配置了流控规则后,如果违背了有定义的blockHandler则用,如果没有,则用默认的处理。
    • 上述出现问题:耦合+默认自定义+代码膨胀
      客户自定义限流处理:
      自定义类CustomerBlockHandler
  • sentinal服务熔断
    注册到Nacos
    sentinel整合了ribbon+openfeign+fallback
    riibbon:负载均衡

  • 例子:
    84订单利用ribbon负载均衡,然后调用服务9003,9004
    84订单本身服务熔断(ribbon+Restemplate)

  • 以上目的是:进一步加深sentinelresource的属性,fallback管理运行异常,blokHandler管配置违规

  • falback 能够管理运行时异常(java异常)相当于服务降级

  • blockHandler只负责sentinel的配置异常,不负责运行时异常

  • 整合sentinel+Feign = ribbon + RestTemplate

  • sentinel框架的持久化

    • 将配置规则配到nacos中
      nacos和sentinel整合(sentinel的配置保存到nacos中)
      即可直接将sentinel的配置写入nacos中保存,然后sentinel中的规则就会有
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值