springCloudAlibaba使用sentinel入门,流控

部署sentinel控制台

先上一波github文档
https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0
下载jar包直接启动就行,官方文档里挺详细的

sentinel控制台没有指定账密的话默认都是sentinel

使用sentinel(先上依赖)

默认已经引入了springCloudspringCloudAlibaba的依赖,要注意sentinel服务端的版本,可以在引入这个依赖后查看sentinel的版本,从而确定server端版本

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
dependency>

yml配置完就ok了

spring:
	cloud:
		sentinel:
		  transport:
		    # 指定sentinel控制台地址
		    dashboard: localhost:8080
		    # 指定和控制台通信的IP,若不配置,会自动选择一个IP注册
		    client-ip: 127.0.0.1
		    # 指定和控制台通信的端口哦,默认值8719
		    # 若不配置,会自动扫猫从8719开始扫猫,依次+1,知道值找到未被占用的端口
		    port: 8719
		    # 心跳发送周期,默认值null
		    # 但在SimpleHttpHeartbeatSender会用默认值10秒
		    heartbeat-interval-ms: 10000

如果想查看actuator/sentinel的信息

需要引入actuator的依赖

 <dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>

然后在yml中配置

management:
  endpoints:
    web:
      exposure:
        include: '*'

接着访问配置上述yml的微服务,注意不是访问sentinel服务端.是访问上面配置的ymltomcat应用

http://localhost:9005/actuator/sentinel

springCloudAlibaba使用sentinel入门,流控_第1张图片

sentinel的流控规则介绍

springCloudAlibaba使用sentinel入门,流控_第2张图片

规则介绍
springCloudAlibaba使用sentinel入门,流控_第3张图片

  • 资源名:唯一名称,默认请求路径,有可能不是路径因为其就只是一个名称而已
  • 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)
  • 阈值类型/单机阈值
    QPS(每秒钟的请求数量):当调用该apiQPS达到阈值的时候,进行限流
    线程数:当调用该api的线程数达到阈值的时候,进行限流
  • 是否集群:不需要集群,暂不研究
  • 流控模式
    直接api达到限流条件时,直接限流 .(直接生效限流操作)
    关联:当关联的资源达到阈值时,就限流自己
    链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)【api级别的针对来源】
  • 流控效果
    快速失败:直接失败,抛异常
    Warm Up:根据codeFactor(冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值.就是让请求逐步增长,这个时候高并发下实际请求会大于通过的请求,剩下的实际请求还是会失败的.可以看下面的warmUpdemo.
    排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效

针对单个api设置QPS直接快速失败(流控模式直接)

springCloudAlibaba使用sentinel入门,流控_第4张图片
比如设置QPS的域名为2,即每秒最大请求次数2次,用postman模拟后可以看到前2次都成功了,后面的几次都失败了
springCloudAlibaba使用sentinel入门,流控_第5张图片

针对某个api流控模式关联demo

当某个服务已经满载的时候这个时候就限流自己,防止把对面的服务搞挂了.起到保护关联资源的效果.
springCloudAlibaba使用sentinel入门,流控_第6张图片

链路demo

可以针对调用同一个@SentinelResource注解声明的服务(方法)的多个api进行来源限流,细化到了api级别
springCloudAlibaba使用sentinel入门,流控_第7张图片
springCloudAlibaba使用sentinel入门,流控_第8张图片
springCloudAlibaba使用sentinel入门,流控_第9张图片

流控效果–warmUp

在设置订预热时长内让系统慢慢的将阈值升至给定值,
springCloudAlibaba使用sentinel入门,流控_第10张图片

springCloudAlibaba使用sentinel入门,流控_第11张图片

流控效果—排队等待

阈值类型必需设置成QPS,否则无效
springCloudAlibaba使用sentinel入门,流控_第12张图片
springCloudAlibaba使用sentinel入门,流控_第13张图片

降级规则

当单位统计时长(statIntervalMs默认1000ms)内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断,然后就又要保持熔断时间,在熔断期间的所有请求都是进不来的,都会被拒绝。

springCloudAlibaba使用sentinel入门,流控_第14张图片

springCloudAlibaba使用sentinel入门,流控_第15张图片

你可能感兴趣的:(springboot,springCloud,java,spring,cloud,微服务)