专有云Spring Cloud应用限流降级--Series3:配置控制台规则

专有云Spring Cloud应用限流降级--Series3:配置控制台规则

1. 查看簇点链路

Sentinel 将每一个需要流控的 URL 或者接口称为一个资源,并使用URL地址或方法签名表示资源。Sentinel 会自动发现所有潜在的资源和资源之间的调用链,并在簇点链路页面展示。 资源是设置流控规则的载体,通过簇点链路自发现,可以方便的对重要资源设置流控规则、熔断降级规则等。

说明:客户端有访问量之后,才能在簇点链路页面看到资源监控(lazy-initializing)。

1.登录Sentinel控制台。

2.单击左侧导航栏中的簇点链路,可以看见微服务曾经被访问过的路径,同时在访问过的路径后的操作栏中可以进行流控、降级、热点、授权操作。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则图1:控制台

2. 配置留空规则

流量控制规则用于保护服务提供方,服务提供方指任何可以对外提供服务的系统,系统的服务能力是有限的,如果消费方请求速度过高,则采用相应的保护策略,或是直接拒绝,或是排队等待。通过流控规则页面可以查看和配置流量控制规则。

1.单击流控规则页签,然后在页面右上角单击新增流控规则。

2.在新建流控规则对话框中配置规则信息。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则
图2:新建流控规则

  • 资源名:即待流控的资源名称。
  • 针对来源:即该规则针对的来源应用,默认来源应用设为 default,代表不区分来源应用。
  • 阈值类型:应用或服务流量的 QPS 或线程数指标。

    ①QPS(每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流。
    ②线程数:当调用该api的线程数达到阈值的时候,进行限流。

  • 流控模式:选择资源调用关系进行流控。资源关系有:直接、关联和链路三种。

    ①直接:api达到限流条件时,直接限流。
    ②关联:当关联的资源达到阈值时,就限流自己。
    ③链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)

  • 流控效果:当阈值类型阈值类型为 QPS 时,可以选择流控方式来处理被拦截的流量。

    ①快速失败:达到阈值时,立即拦截请求。
    ②Warm Up:根据codeFactor(冷加载因子,默认的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值。
    ③排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效。

3.单击新增。新的流控规则将出现在流控规则列表中。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则图3:流控规则列表

3. 配置降级规则

降级规则用于保护服务消费方。在微服务架构中,业务系统通常要依赖多个服务,依赖的某个服务不可用将会影响业务系统的可用性。解决这个问题的方法是及时发现服务的不可用状态,在调用时快速失败而不是等待调动超时或者重试。Sentinel 通过熔断降级来达到快速失败的目的。通过降级规则页面可以查看和配置降级规则。

1.单击降级规则页签,然后在页面右上角单击新建降级规则。

2.在新建降级规则对话框中配置规则信息。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则
图4:降级规则

  • 资源名称:适用该规则的应用资源。
  • 降级策略:

    ①RT:平均响应时间(秒级统计)超出阈值且在时间窗口内的请求 >= 5时,触发降级;时间窗口结束后,关闭降级(Sentinel默认最大的RT为4900ms,可以通过-Dcsp.sentinel.statistic.max.rt=xxx修改)。
    ②异常比例:QPS>= 5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级。
    ③异常数:异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级(时间窗口< 60秒可能会出现问题)。

  • 时间窗口:即降级触发后持续的时间。资源进入降级状态后,在配置的降级窗口时间内,请求都会快速失败。

3.单击新增。配置成功后,新的降级规则将出现在降级规则列表中。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则图5:降级规则列表

4. 配置热点规则

为应用配置热点规则后,EDAS 将分析统计热点参数(资源调用过程中的调用次数较高的参数),并根据配置的热点规则对包含热点参数的资源调用进行限流,保护系统稳定性。
说明:Sentinel默认显示的端点并不支持热点规则,要显示热点规则,需要自己添加代码。

@ApiOperation(value = "获取调用中间服务返回信息")
@RequestMapping(value = "/echo-mid", method = RequestMethod.GET)
@SentinelResource("/echo-mid") 
public String midRest(@RequestParam("str") String str) {
       MockService.mock2();
       return restTemplate.getForObject("http://nacos-service-broker/echo-mid?str="
+ str, String.class) + "\r\n";
}

1.单击热点规则页签,然后在页面右上角单击新增热点规则。

2.在新增热点规则对话框中,配置规则信息。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则
图6:热点规则

  • 资源名:适用该规则的资源名称,与埋点传入的资源名保持一致。
  • 参数索引:埋点传入参数的索引位置。
  • 阈值:是作用于每个热点参数的阈值。
  • 统计窗口时长:统计窗口时间长度(单位为秒)。例如统计窗口时长为 10s,QPS 阈值为 5 代表限制 10s 内每个热点参数访问不超过 5 次。

3.单击新增。配置成功后,新的热点规则将出现在热点规则列表中。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则图7:热点规则列表

5. 配置授权规则

1.单击授权规则页签,然后在页面右上角单击新增授权规则。

2.在新增授权规则对话框中,配置规则信息。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则
图8: 授权规则

  • 资源名:适用该规则的资源名称,与埋点传入的资源名保持一致。
  • 流控应用:添加微服务。

3.单击新增。配置成功后,新的授权规则将出现在授权规则列表中。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则
图9:授权规则列表

6. 配置系统规则

系统规则从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,结合自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量状态下稳定运行。

1.单击系统规则页签,然后在页面右上角单击新增系统规则。

2.在新增系统规则对话框中,配置规则信息。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则
图10:系统规则

  • 阈值类型:

    ①LOAD(仅对Linux/Unix-like 机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的 maxQps minRt 计算得出。设定参考值一般是 CPU cores 2.5。
    ②RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。
    ③线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
    ④入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。
    ⑤CPU 使用率:当系统 CPU 使用率超过阈值即触发系统保护(取值范围 0.0~1.0)。

  • 流控应用:添加微服务。

3.单击新增。配置成功后,新的系统规则将出现在系统规则列表中。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则图11:系统规则列表

往期内容

专有云Spring Cloud应用限流降级--Series1:迁移指导
专有云Spring Cloud应用限流降级--Series2:应用部署

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

专有云Spring Cloud应用限流降级--Series3:配置控制台规则

上一篇:如何用好云的弹性


下一篇:微信小程序调用微信支付接口