sentinel 流控规则详解

您所在的位置:网站首页 流量卫士流控 sentinel 流控规则详解

sentinel 流控规则详解

2023-08-05 16:01| 来源: 网络整理| 查看: 265

Sentinel的主要工作之一就是流量控制,因此对流控规则的掌握是必不可少的。

SENTINEL名词解释 资源名:唯一名称,默认请求路径(如:http://localhost:8089/testA)针对来源:Sentinel可以针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认default(不区分来源,全部限制)阈值类型/单机阈值: 1、QPS(每秒钟的请求数量):当调用该接口的QPS达到了阈值的时候,进行限流; 2、线程数:当调用该接口的线程数达到阈值时,进行限流是否集群:不需要集群流控模式: 1、直接:接口达到限流条件时,直接限流 2、关联:当关联的资源达到阈值时,就限流自己 3、链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就可以限流)[api级别的针对来源]流控效果 1、快速失败:直接失败 2、Warm Up:即请求 QPS 从 threshold / 3 开始,经预热时长逐渐升至设定的 QPS 阈值 3、排队等待 阈值类型讲解

单机阈值比较好理解,就是每秒对QPS/线程数的控制。 QPS与线程数的区别在于:

QPS单纯的代表每秒的访问次数,只要访问次数到达一定的阈值,这进行限流操作线程数,代表的是每秒内访问改api接口的线程数,如果该接口的操作比较长,当排队的线程数到达阈值的时候,进行限流操作,相反的如果接口的操作很快,即是没秒内的操作很快,同样不会进行限流操作QPS可以简单的理解为访问次数,但是线程数是和接口处理的快慢有关的。 流控模式

流控模式分为直接、关联和链路 直接模式理解起来比较简单,就是单纯的对当前资源的流量控制,这里不再做过多的解释。

关联模式

定义:当关联的资源达到阈值时,限流自己。 如下图的配置,当A的QPS的阈值到达10的时候,B就会被限流。

链路模式

源码如下: 定义SentinelResource 为getOrder

import java.util.Random; @Service public class OrderServiceImpl implements OrderService{ @Override @SentinelResource(value = "getOrder", blockHandler = "handleException") public String getOrder() { return String.valueOf(new Random().nextInt()); } public String handleException(BlockException ex) { System.out.println("县六中............"); return ex.getClass().getCanonicalName() + "\t服务不可用"; } }

定义两个请求接口,调用getOrder()

@Resource private OrderService orderService; @GetMapping("/test1") public String test1() { return orderService.getOrder(); } @GetMapping("/test2") public String test2() { return orderService.getOrder(); }

实际效果,应该是对配置链路的test1进行限流控制,实现更加细致化的流控,但是实际并没有什么效果。

流控效果

流控效果分为直接失败、预热和排队等待。 直接失败理解起来比较简单,就是限流的时候直接提示。

预热模式

根据codeFactor(冷加载因子,默认为3)的值,即请求 QPS 从 threshold / 3 开始,经预热时长逐渐升至设定的 QPS 阈值 ,因此上图的配置就是系统初始化的默认阈值为10 / 3,即为3,也就是刚开始的时候阈值只有3,当经过5s后,阈值才慢慢提高到10;这种情况主要是为了保护系统,例如在秒杀系统的开启瞬间,会有很多流量上来,很可能会把系统打挂,预热方式就是为了保护系统,可以慢慢的把流量放进来,慢慢的把阈值增长到设定值。

排队等待模式

/test2每秒10次请求,超过的话就排队等待,等待的超时事件为10ms,目的是为了匀速处理请求,保证服务的均匀性,而不是一会处理大量的请求,一会有没有请求可处理。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3