Sentinel简记(一)

作者: KenChen_939 | 来源:发表于2020-10-18 18:02 被阅读0次

    Sentinel是什么?

    一句话:无限接近Hystrix

    Sentinel分为两个部分:

    • 核心库:(JAVA客户端)不依赖任何框架,能够运行于所有JAVA环境,
    • 控制台:(Dashboard)基于Springboot开发,打包后可以直接运行,不需要额外的Tomcat等应用。

    启动方法:

    java -jar sentinel-dashboard-1.8.0.jar
    访问80端口即可,默认账号密码都是sentinel

    ![截屏2020-10-18 下午5.59.00.png](https://img.haomeiwen.com/i15333334/5883e8f6d562c8a2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    Spring集成

    pom

    <!--SpringCloud ailibaba sentinel -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    

    yml

    spring:
      application:
        name: cloudalibaba-sentinel-service
      cloud:
        nacos:
          discovery:        #nacos服务注册中心地址
            server-addr: www.cjlly.com:8848
        sentinel:            #Sentinel注册地址
          transport:
            dashboard: www.cjlly.com:8080
            port: 8719
    

    此时启动项目后登陆sentinel控制台界面会发现空空如也,因为sentinel是懒加载机制,执行一次访问即可

    Sentinel流控模式

    默认情况下是快速失败,即新增流控规则,阀值类型选择QPS(每秒钟访问多少次),在单机阀值那里填写数字即可。当访问超过阀值的时候接口就会停止访问。

    名词:

    • 资源名:唯一名称,默认请求路径
    • 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认Default(不区分来源)
    • 阀值类型/单机阀值
      • QPS(每秒钟的请求数量):当调用该api的QPS达到阀值的时候,进行限流
      • 线程数:当调用该API的线程数达到阀值的时候,进行限流
    • 是否集群:不需要集群
    • 流控模式:
      • 直接:当api达到限流条件的时候,直接限流
      • 关联:当关联的资源达到阀值的时候,就限流自己
      • 链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阀值,就进行限流)【api级别的针对来源】
    • 流控效果:
      • 快速失败:直接失败,报异常
      • Warm Up:根据codeFactor(冷加载因子,默认为3)的值,从阀值/codeFactor,经过预热时常,才达到设置的QPS阀值
      • 排队等待:匀速排队,让请求以匀速的速度通过,阀值类型必须设置为QPS,否则无效。

    流控模式:

    • 直接失败
      当访问超过设定的阀值直接失败。
    • 关联
      当关联的资源达到阀值的时候就限流自己,比如controller中含有两个方法A和B,当与A关联的资源B达到阀值后,就限流A,B惹事,A挂了。
      设置A的流控规则,QPS为1,关联B,那么当B的访问超过阀值的时候A就无法访问。

    流控效果:

    • 预热(Warm Up)
      公式:阀值除以coldFactor(默认为3),经过预热时长后才会发到阀值。
      解读:Warm Up即预热/冷启动方式。当系统长期处于低水位的情况下,流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过“冷启动”,让通过的流量缓慢增加,在一定时间内逐渐增加到阀值上限,给冷启动一个预热时间,避免冷启动被压垮。
      比如说设置A的QPS阀值为10,warm up时间为5s,那么最开始阀值就是3,5秒后慢慢增加到预设的10.
      应用场景:秒杀系统在开启瞬间,会有很多流量上来,很有可能把系统打死。预热方式就是为了保护系统,慢慢的把流量放进来。

    • 排队等待
      匀速排队,让请求以均匀的速度通过,阀值类型必须设置成QPS,否则无效。对应的是漏桶算法.
      设置含义:/A每秒1次请求,超过的话就排队等待,等待的超时时间为2000毫秒。
      应用场景:主要用于处理间隔性突发流量,比如在某一秒内有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。

    相关文章

      网友评论

        本文标题:Sentinel简记(一)

        本文链接:https://www.haomeiwen.com/subject/llmcmktx.html