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