0
点赞
收藏
分享

微信扫一扫

Spring Cloud Alibaba 学习笔记(4)

容错

sentinel页面配置

  • 依赖
       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
  • 注解:无
  • 配置:无
  • 依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
  • 配置
management:
  endpoints:
    web:
      exposure:
        include: '*'
  • 注解:无
  • 官方下载和自己项目版本搭配的sentinel版本。并运行jar包。

在这里插入图片描述

  • 添加配置:
    sentinel:
      transport:
        #指定sentinel 控制台的地址
        dashboard: localhost:8080

然后我们可以测试一下sentinel的界面,是否成功显示。
网页:localhost:8080/#/login
初试账户密码都是sentinel

这里我们有个注意点:sentinel是懒加载,所以当我们程序运行后,输入sentinel的网址,里面是空的,这是因为sentinel是懒加载,需要我们测试一下链路,然后再刷新一下此网址,便可得到下面的页面。

在这里插入图片描述

流控规则

直接

QPS:query per second :每秒的查询率
在这里插入图片描述
简单设置一下规则,qps = 2,然后测试

在这里插入图片描述

在这里插入图片描述

关联

1. http://localhost:8010/actuator/sentinel
2. http://localhost:8010/shares/2
然后我们设置shares里面关联actuator

在这里插入图片描述

这个规则解释是:当actuator达到限流的时候,就限制shares端口。

修改接口过快,会影响查询接口的调用;
查询接口调用过快,会影响修改接口的调用;

在这里插入图片描述

链路:

我们通过代码来学习一下:

  @Autowired
    private TestService testService;
    @GetMapping("/test-A")
    public String testA() {
        this.testService.common();
        return "test-A";
    }

    @GetMapping("/test-B")
    public String testB() {
        this.testService.common();
        return "test-B";
    }



@Service
@Slf4j
public class TestService {
    @SentinelResource("common")
    public String common() {
        log.info("common");
        return "common";
}


在这里插入图片描述

在这里插入图片描述

直接和关联:是微服务级别的限流
链路是api级别的限流

  • 快速失败:抛异常
  • warm up:根据codeFactor(默认3)【冷加载因子】的值,从阈值/codeFactor,经过预热时长,才到达设置的QPS阈值。使用场景:秒杀服务。
    在这里插入图片描述
  • 排队等待:匀速排队,让请求以均匀的速度通过,阈值类型必须设成QPS,否则无效;应用场景:适用于应对突发流量,希望应用可以在空闲的时候处理请求,而不是直接拒绝请求。

降级规则

  • RT:

在这里插入图片描述

在这里插入图片描述

表达的意思:如果shares/2这个api秒级统计的RT>1ms,并且在5s内通过的请求>=5次,那么就触发降级,断路器打开,等待5s结束,才会关闭降级(断路器)

在这里插入图片描述

sentinel默认的RT最大4900ms,如果我们需要设置更大的RT数值,我们通过:Dcsp.sentinel.static.max.rt=xxx修改。

  • 异常比例:秒级别
    QSP>=5&&异常比例(秒级统计)超过阈值—>触发降级---->时间窗口结束----->关闭降级
  • 异常数:分钟级别
    异常数(分钟统计)超过阈值—>触发降级——>时间窗口结束——> 关闭降级
    注意点:时间窗口<60s可能会出问题
    在这里插入图片描述

热点规则

sentinel本身是不支持热点规则的,要使用热点规则,需要自己加代码
在这里插入图片描述

在时间窗口以内,一旦方法指定的索引参数,他的QPS达到了阈值,那么就会触发限流
在这里插入图片描述

热点规则是特殊的流控规则;
使用场景:适用于存在热点参数,某些参数的qps特别高,并且希望提高api可用性的场景。
参数需要基本类型。

系统规则

在这里插入图片描述

  • Load:负载
    当系统load1(1分钟的load)超过阈值,并发线程数超过系统通量时触发,建议设置为CPU核心数*2.5.(仅对linux/unix机器生效),
    在这里插入图片描述

RT:所有入口流量的平均RT达到阈值触发
线程数:哦呦入口流量的并发线程数达到阈值触发
入口QPS:所有入口流量的QPS达到阈值触发

授权规则

在这里插入图片描述

ok,暂时到这,接下一篇博客spring cloud alibaba 笔记(5)
keep moving~~

在这里插入图片描述

举报

相关推荐

0 条评论