1. 查看簇点链路
Sentinel 将每一个需要流控的 URL 或者接口称为一个资源,并使用URL地址或方法签名表示资源。Sentinel 会自动发现所有潜在的资源和资源之间的调用链,并在簇点链路页面展示。 资源是设置流控规则的载体,通过簇点链路自发现,可以方便的对重要资源设置流控规则、熔断降级规则等。
说明:客户端有访问量之后,才能在簇点链路页面看到资源监控(lazy-initializing)。
1.登录Sentinel控制台。
2.单击左侧导航栏中的簇点链路,可以看见微服务曾经被访问过的路径,同时在访问过的路径后的操作栏中可以进行流控、降级、热点、授权操作。
图1:控制台
2. 配置留空规则
流量控制规则用于保护服务提供方,服务提供方指任何可以对外提供服务的系统,系统的服务能力是有限的,如果消费方请求速度过高,则采用相应的保护策略,或是直接拒绝,或是排队等待。通过流控规则页面可以查看和配置流量控制规则。
1.单击流控规则页签,然后在页面右上角单击新增流控规则。
2.在新建流控规则对话框中配置规则信息。
图2:新建流控规则
- 资源名:即待流控的资源名称。
- 针对来源:即该规则针对的来源应用,默认来源应用设为 default,代表不区分来源应用。
- 阈值类型:应用或服务流量的 QPS 或线程数指标。
①QPS(每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流。
②线程数:当调用该api的线程数达到阈值的时候,进行限流。 - 流控模式:选择资源调用关系进行流控。资源关系有:直接、关联和链路三种。
①直接:api达到限流条件时,直接限流。
②关联:当关联的资源达到阈值时,就限流自己。
③链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流) - 流控效果:当阈值类型阈值类型为 QPS 时,可以选择流控方式来处理被拦截的流量。
①快速失败:达到阈值时,立即拦截请求。
②Warm Up:根据codeFactor(冷加载因子,默认的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值。
③排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效。
3.单击新增。新的流控规则将出现在流控规则列表中。
图3:流控规则列表
3. 配置降级规则
降级规则用于保护服务消费方。在微服务架构中,业务系统通常要依赖多个服务,依赖的某个服务不可用将会影响业务系统的可用性。解决这个问题的方法是及时发现服务的不可用状态,在调用时快速失败而不是等待调动超时或者重试。Sentinel 通过熔断降级来达到快速失败的目的。通过降级规则页面可以查看和配置降级规则。
1.单击降级规则页签,然后在页面右上角单击新建降级规则。
2.在新建降级规则对话框中配置规则信息。
图4:降级规则
- 资源名称:适用该规则的应用资源。
- 降级策略:
①RT:平均响应时间(秒级统计)超出阈值且在时间窗口内的请求 >= 5时,触发降级;时间窗口结束后,关闭降级(Sentinel默认最大的RT为4900ms,可以通过-Dcsp.sentinel.statistic.max.rt=xxx修改)。
②异常比例:QPS>= 5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级。
③异常数:异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级(时间窗口< 60秒可能会出现问题)。 - 时间窗口:即降级触发后持续的时间。资源进入降级状态后,在配置的降级窗口时间内,请求都会快速失败。
3.单击新增。配置成功后,新的降级规则将出现在降级规则列表中。
图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.在新增热点规则对话框中,配置规则信息。
图6:热点规则
- 资源名:适用该规则的资源名称,与埋点传入的资源名保持一致。
- 参数索引:埋点传入参数的索引位置。
- 阈值:是作用于每个热点参数的阈值。
- 统计窗口时长:统计窗口时间长度(单位为秒)。例如统计窗口时长为 10s,QPS 阈值为 5 代表限制 10s 内每个热点参数访问不超过 5 次。
3.单击新增。配置成功后,新的热点规则将出现在热点规则列表中。
图7:热点规则列表
5. 配置授权规则
1.单击授权规则页签,然后在页面右上角单击新增授权规则。
2.在新增授权规则对话框中,配置规则信息。
图8: 授权规则
- 资源名:适用该规则的资源名称,与埋点传入的资源名保持一致。
- 流控应用:添加微服务。
3.单击新增。配置成功后,新的授权规则将出现在授权规则列表中。
图9:授权规则列表
6. 配置系统规则
系统规则从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,结合自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量状态下稳定运行。
1.单击系统规则页签,然后在页面右上角单击新增系统规则。
2.在新增系统规则对话框中,配置规则信息。
图10:系统规则
- 阈值类型:
①LOAD(仅对Linux/Unix-like 机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的 maxQps minRt 计算得出。设定参考值一般是 CPU cores 2.5。
②RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。
③线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
④入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。
⑤CPU 使用率:当系统 CPU 使用率超过阈值即触发系统保护(取值范围 0.0~1.0)。 - 流控应用:添加微服务。
3.单击新增。配置成功后,新的系统规则将出现在系统规则列表中。
图11:系统规则列表
往期内容
专有云Spring Cloud应用限流降级--Series1:迁移指导
专有云Spring Cloud应用限流降级--Series2:应用部署
我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。