SpringCloudAlibaba-Sentinel⼊门案例(⼆)(流控规则直接关联链路。。。Spring Cloud Alibaba - Sentinel⼊门案例(⼆)(流控规则 | 直接 / 关联 / 链路 / 快速失败 / Warm Up / 排队等待)
回溯
Sentinel 基本概念
资源:就是Sentinel要保护的东西,它可以是 Java 应⽤程序中的任何内容,可以是⼀个服务,也可以是⼀个⽅法,甚⾄可以是⼀段代码。
规则:就是⽤来定义如何进⾏保护资源的,作⽤在资源之上, 定义以什么样的⽅式保护资源,主要包括流量控制规则、熔断降级规则以及系统保护规则。
若对 Sentinel 还没有⼀个认知,可以参考前⾯的博⽂。
本⽂主要讲解 Sentinel 容错功能之⼀ 流量控制 。
正⽂
环境准备
需要启动好 Sentinel 控制台,以及监控⼀个消费者。
springcloud难学吗
若对这⼀步有疑虑,请参考。
流控规则介绍
流量控制,其原理是监控应⽤流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时
对流量进⾏控制,以避免被瞬时的流量⾼峰冲垮,从⽽保障应⽤的⾼可⽤性。
简单介绍
当我们点击 簇点链路 选择相对应的资源名,点击 +流控,就可为需要的资源添加流控规则。
以下做⼀个简单的介绍:
资源名:唯⼀名称,默认是请求路径,可⾃定义(后续讲解)。
针对来源:指定对哪个微服务进⾏限流,默认指default,意思是不区分来源,全部限制。
阈值类型/单机阈值:QPS(每秒请求数量): 当调⽤该接⼝的QPS达到阈值的时候,进⾏限流 / 线程数:当调⽤该接⼝的线程数达到阈值的时候,进⾏限流 。
是否集:是否集配置 。
对阈值类型 / 单机阈值做测试
对于简单的配置⽽⾔,有两个默认项:
流控模式:直接 。
流控效果:快速失败 。
⾄于什么是流控模式,什么是流控效果,后续会讲解。
⾸先我们选择QPS,单机阈值填写2,点击新增 。
添加成功后我们可以到流控规则⾥⾯查看我们设置的流控。
由于这边我们QPS选择了阈值为2,意思是。这个请求路径,每秒只允许2个请求。超出会使⽤流控效果。⽽简单配置的流控效果是快速失败。
配置完成,当我快速请求服务的时候,会出现 Blocked by Sentinel (flow limiting)ps(这个可更改,后续讲解)。
证明 流控规则 ⽣效。
接下来尝试点击线程数,阈值也是为2。这句话的意思是:这个请求路径,只允许两个线程访问,否则出发流控。
利⽤ jmeter 进⾏测试
修改相应的配置,点击启动,这时候我们通过浏览器再次访问,也会出现Blocked by Sentinel (flow limiting)。
证明 流控规则 ⽣效。
流控模式
sentinel共有三种流控模式,分别是:
直接(默认):接⼝达到限流条件时,开启限流。
关联:当关联的资源达到限流条件时,开启限流 (适合做应⽤让步)。
链路:当从某个接⼝过来的资源达到限流条件时,开启限流。
直接流控模式
直接流控模式是最简单的模式,当指定的接⼝达到限流条件时开启限流。前⾯的两个案例都是默认直接流控。
关联流控模式
关联流控模式指的是,当指定接⼝关联的接⼝达到限流条件时,开启对指定接⼝开启限流。
前⾯的例⼦都是对当前的请求服务进⾏流控规则的新增,⽽流控模式中的关联,可以使得其它的请求服务达到阈值,本服务进⾏流控。