Spring Cloud Alibaba Sentinel

一、介绍(sentinel 1.7.0) 1,官网地址

  https://github.com/alibaba/Sentinel

  中文地址:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

2,主要特征

Sentinel 具有以下特征:

丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

  

Spring Cloud Alibaba Sentinel

3,安装使用

  下载:https://github.com/alibaba/Sentinel/tags (选择对应的版本下载jar包这里以1.7.0为例)

  启动:java -jar sentinel-dashboard-1.7.0.jar (默认启动8080端口)

  访问::8080

二、项目示例

源码:cloudalibaba-sentinel-service8401

三、流控规则

           

Spring Cloud Alibaba Sentinel

  注:Sentinel的监控页面一开始是没有东西,需要对监控的服务发起请求后才会出现

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

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

阈值类型/单机阈值:

QPS(每秒钟的请求数量):当调用该接口的QPS达到了阈值的时候,进行限流;

线程数:当调用该接口的线程数达到阈值时,进行限流

是否集群:不需要集群

流控模式:

直接:接口达到限流条件时,直接限流

关联:当关联的资源达到阈值时,就限流自己

链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就可以限流)[api级别的针对来源]

流控效果

快速失败:直接失败,就异常

Warm Up:根据codeFactor(冷加载因子,默认为3)的值,即请求 QPS 从 threshold / 3 开始,经预热时长逐渐升至设定的 QPS 阈值 []

  详细使用参考:https://www.cnblogs.com/coder-zyc/p/12926644.html

  注意:针对url制定的流控规则会走系统默认的规则,而针对SentinelResource中的资源value制定的流控规则会走自定义的blockHandler方法。

四、降级规则 1,基本介绍

  Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其他的资源而导致级联错误。Sentinel的断路器不存在半开状态,当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出DegradeException)。

        

Spring Cloud Alibaba Sentinel

2,RT

              

Spring Cloud Alibaba Sentinel

  平均响应时间(DEGRADE_GRADE_RT):当1s内持续进入5个请求,对应时刻的平均响应时间(秒级)均超过阈值(以ms为单位),那么接下来的时间窗口(DegradeRule中的timeWindow,以s为单位)之,对这个方法的调用都会出现熔断(抛出DegradeException)。注意Sentinel默认统计的RT上限为4900ms超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配置项-Dcsp.sentinel.statistic.max.rt=xxx来配置。

3,异常比例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsffyy.html