Sentinel简介

Sentinel是一款用于分布式系统服务治理的开源框架,主要功能包括流量控制、熔断降级和系统保护。它支持基于Java的命令行启动,可以通过配置Nacos作为数据源。Sentinel提供了多种流控模式如直接、关联和链路,以及QPS和线程数作为阈值类型。此外,还具备预热、排队等待和系统规则等高级特性,确保服务在高流量和异常情况下的稳定性。
摘要由CSDN通过智能技术生成

sentinel官网

windows jar文件夹cmd启动

-java jar sentinel-dashboard-1.8.1.jar

sentinel:雪崩、服务熔断、服务限流、秒杀、削峰填平

sentinel采用的懒加载说明,需要你执行一次访问即开始监控(例如:http://localhost8401/testA

资源名:唯一名称,默认就是请求路径

针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default( 不区分来源 )

sentinle监控nacos

server:
  port: 8401

spring:
  application:
    name: one-sentinel-text
  cloud:
    nacos:
      discovery:
        #服务注册中心位置
        server-addr: localhost:8848
    sentinel:
      transport:
        #配置sentinel dashboard地址 sentinel启动端口号为8080 8080监控8401
        dashboard: localhost:8080
        # 默认端口号为8719,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口 ,8719和nacos用于交互
        port: 8719

management:
  endpoint:
    web:
      exposure:
        include: '*'

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

阈值类型/单机阈值 :

1.QPS(每秒钟的请求数量)一个人做很多件事情(串行),当调用该api的QPS达到阈值的时候,进行限流,如阈值等于1(1秒只有一个并发量,如果为100那么每秒有100个并发量)并且为快速失败请求路径的频率超过每1秒时就会抛出异常报错

2.线程数:(很多人做一件事情(并行))当调用该api的线程数达到阈值的时候,进行限流,如阈值等于1并且为快速失败时,那么大于一个请求路径同时访问时可能就会报错抛出异常

是否集群:不需要集群

流控模式:

1.直接(默认):api达到限流条件时,直接限流

2.关联:当关联的资源达到阈值时,就限流自己(当与A关联的资源B达到阈值时,就会限流A自己;B惹事,A挂了),防止连坐效应

3.链路:只记录指定链路上的流量(两个点之间的所有资源都会失败)(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)【api级别的针对来源】

要添加配置web-context-unify:false,表示要将调用链路收敛,true会导致链路流控效果无效

假如5秒内,10次请求6次错误,就会熔断,响应错误信息,可能等个5秒又会恢复链路

流控是因为流量大限制,降级熔断是内部错误,两者互相不影响

链路与直接的区别:直接对客户端没有要求,都会约束;链路只对上级接口约束

流控效果:

1.快速失败:直接失败,抛异常

2.Warm Up: 根据codeFactor(冷加载因子,默认3)的值,从阈值codeFactor,经过预热时长,才达到设置的QPS阈值

案例,阈值为10+预热时长设置5秒 系统初始化的阈值为10/3约等于3,即阈值刚开始为3;然后过了5秒后阈值才慢慢升高恢复到10

初始时QPS>实际阈值(=阈值/3)的时候就直接失败,后续实际阈值逐渐调整到设置阈值

作用:秒杀系统在开启的瞬间,会有很多流量上来,很有可能把系统打死,预热方式就是为了保护系统,慢慢的把流量放进来,慢慢的把阈值增长到设置的阈值

3.排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效

可以当作队列来理解,阈值为2,理解为同一时间读取队列中2个元素,若是一个元素处理完,读取下一个元素,剩下的元素如果在队列中等待的时间超过了timeout,就会限流打回

RT( 平均响应时间,秒级)

1.平均响应时间超出阈值且在时间窗口内通过的请求>=5,两个条件同时满足后触发降级

2.窗口期过后关闭断路器

3.RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX才能生效)

异常比例(秒级)

QPS>=5且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级

异常数(分钟级)

异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级

熔断

1.1秒内请求默认最小5个请求,当请求达到阈值5且请求超时则触发熔断

2.异常比例,同1秒内5个请求,达到阈值且异常比例达到则触发熔断

3.异常数1秒内异常数达到阈值触发,时间窗口>60s

熔断就是无法访问,降级就是“系统繁忙稍后再试”

熔断降级

Sentinel熔断降级会在调用链路中某个出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制让请求快速失败,避免影响到其他的资源而导致级别错误

当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出DegradeException)。

正常的降级之前是会走原本的接口;但是熔断是不调用原本接口,不管对错直接进降级。

系统规则

系统规则是从应用级别的入口流量进行控制,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

系统保护规则是应用整体维度的,而不是资源维度的,并且只对入口流量生效,入口流量指的是进入应用的流量(EntryType.IN),比如Web服务或Dubbo服务端接收的请求,都属于入口流量。

支持的模式:

1.load自适应(只对Linux/Unix-like机器生效):系统的load1作为启发指标,进行自适应系统保护。当load1超过设定的启发值,且系统当前的并发线程数超过估算的系统容量时才会触发系统保护(BBR阶段)。系统容量由系统的maxQps*minRt估算得出,设定参考值一般是CPU core*2.5

2.CPU usage(1.5.0+版本):当系统CPU使用率超过阈值即触发系统保护(取值范围0.0-1.0),比较灵敏。

3.平均RT:当单台机器上所有入口流量的平均RT达到阈值即触发保护系统,单位是毫秒(ms)

4.并发线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护

5.入口QPS:当单台机器上所有入口流量的QPS达到阈即触发系统保护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风揽清河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值