1. 首页
  2. Java

SpringCloud微服务组件-Sentinel(一)

一、cascading failure(级联失效/雪崩效应)

基础服务故障导致上层服务故障,并且故障不到放大的过程叫做雪崩效应

二、常见容错方案

  • 1.超时
  • 2.限流
  • 3.仓壁模式
  • 4.断路器模式(https://martinfowler.com/bliki/CircuitBreaker.html)
    • 断路器说明
      规定时间内的错误率或者错误次数达到阈值就跳闸
    • 断路器状态转换
      SpringCloud微服务组件-Sentinel(一)

三、Sentinel 简介

sentinel是轻量级的流量控制、熔断降级Java库

四、流控规则

  • 1.Sentinel流控模式
    • 直接
    • 关联:当关联的资源达到阈值,就限流自己
    • 链路:只记录指定链路上的流量
  • 2.Sentinel流控效果
    • 快速失败:直接失败,抛异常
    • Warm Up:根据codeFactor(默认3)的值,从阈值/codeFactor,经过预热时长,才到达设置的QPS阈值
    • 排队等待:匀速排队,让请求以均匀的速度通过,阈值类型必须设成QPS,否则无效

五、降级规则

  • 1.RT:平均响应时间超过阈值&&时间窗口内通过的请求超过指定次数触发降级,RT默认最大4900ms(可通过Dcsp.sentinel.statistic.max.rt=xxx修改)
  • 2.异常比例
  • 3.异常数:异常数超过阈值(分钟级别)
    sentinel的断路器没有半开状态

六、热点规则

在时间窗口内,方法的指定索引参数QPS达到阈值就会触发限流

七、系统规则

  • 1.LOAD
    当系统load1(1分钟的load)超过阈值,且并发线程数超过系统容量时触发,建议设置为CPU核心数*2.5。(仅对 Linux/Unix-like机器生效)
  • 2.RT
    所有入口流量的平均RT达到阈值触发
  • 3.线程数
    所有入口流量的并发线程数达到阈值触发
  • 4.入口QPS
    所有入口流量的QPS达到阈值触发

八、授权规则

授权规则通过调用来源限制,实现对服务消费者的授权或者限制

九、Sentinel与控制台如何通信

微服务集成sentinel-transport-simple-http模块后,将服务注册到Sentinel Dashboard并定时给控制台发送心跳(通讯默认端口8720)

十、应用端连接控制台配置项

SpringCloud微服务组件-Sentinel(一)

十一、Sentinel API

  • 1.SphU:定义资源,让资源受到监控,保护资源
  • 2.Tracer:对异常进行统计
  • 3.ContextUtil:标记调用

十二、Feign 整合Sentinel

添加配置feign.sentinel.enabled = true
@FeignClient添加fallback或者fallbackFactory(可捕获异常)属性即可配置降级方法调用

原创文章,作者:小童子,如若转载,请注明出处:https://www.caobinrg.com/637.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

邮件:caobinrg@163.com