天天看点

(二)微服务保护——限流规则微服务保护——限流规则

  • 微服务保护——限流规则
    • 一、快速入门:
      • 1、簇点链路:
    • 二、流控模式:
      • (一)三种模式:
      • (二)关联模式:
        • 1、例子:
        • 2、 使用场景:
        • 3、案例:
      • (三)链路模式:
        • 1、例子:
        • 2、案例
    • 三、流控效果:
      • (一)流控效果的种类
        • 1、快速失败:
        • 2、warm up预热模式:
        • 3、排队等待:
      • (二)预热模式:
      • (三)排队等待:
    • 四、热点参数限流:
      • (一)理解:

微服务保护——限流规则

一、快速入门:

1、簇点链路:

簇点链路:就是项目内的调用链路,链路中被监控的每个接口就是一个资源。

默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。

流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:

(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则

二、流控模式:

(一)三种模式:

在添加限流规则时,点击高级选项,可以选择三种流控模式:

1、直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式

2、关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流

3、链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流

(二)微服务保护——限流规则微服务保护——限流规则

(二)关联模式:

1、例子:

AB两个资源,A触发了阈值,对B进行限流;

2、 使用场景:

比如用户支付时需要修改订单状态,同时用户要查询订单。查询和修改操作会争抢数据库锁,产生竞争。业务需求是优先支付和更新订单的业务,因此当修改订单业务触发阈值时,需要对查询订单业务限流。

满足下面条件可以使用关联模式:

1、两个有竞争关系的资源

2、一个优先级较高,一个优先级较低

(二)微服务保护——限流规则微服务保护——限流规则

当/write资源访问量触发阈值时,就会对/read资源限流,避免影响/write资源

3、案例:

给谁限流,资源名就写谁。

(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则

(三)链路模式:

1、例子:

统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流;也就是说:ABC三个服务请求都要访问D的请求,只统计A服务到本资源的请求,触发阈值则对A的请求限流。

(二)微服务保护——限流规则微服务保护——限流规则

2、案例

(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则

三、流控效果:

(一)流控效果的种类

流控效果是指请求达到流控阈值时应该采取的措施,包括三种:

1、快速失败:

达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。

2、warm up预热模式:

对超出阈值的请求同样是拒绝并抛出异常。但这种模式阈值会动态变化,从一个较小值逐渐增加到最大阈值。

3、排队等待:

让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长,否则也会抛出异常,拒绝这个请求。

(二)预热模式:

主要是为了避免冷启动那一刻过高的并发导致服务故障。所以让阈值逐步增大,而不是一下子就达到阈值的最大值。

(二)微服务保护——限流规则微服务保护——限流规则

(三)排队等待:

(二)微服务保护——限流规则微服务保护——限流规则

对于不稳定的访问请求,使用排队等待模式则可以让请求稳定地被放行。比如在两秒内,第一秒没有请求,第二秒突然来了10个请求,这个时候达到阈值,它会把这写请求放到一个队列中,然后队列每隔200ms就放行一个请求。这就能让波浪形的QPS变成平缓形的QPS。可以起到流量整形的效果。

四、热点参数限流:

(一)理解:

(二)微服务保护——限流规则微服务保护——限流规则
(二)微服务保护——限流规则微服务保护——限流规则

注意点:热点参数限流对默认的SpringMVC资源无效,需要给资源添加注解@SentinelResource(“资源名称”)

(二)微服务保护——限流规则微服务保护——限流规则