概述
限流降级包含限流和降级两个功能。限流是指通过调节流量阈值控制通过系统的最大流量值,保证系统安全可靠运行。降级通常用于对下游出现超时的非核心服务提供者进行低优先级调用,确保上游核心应用(服务消费者)不被影响。通过接入限流降级,您实时查看限流降级详情和动态变更规则,从而全面保障您的应用可用性。使用限流降级需要事先部署时配置限流降级高级配置接入限流降级。
前提条件
在使用限流降级功能前,您需要在部署应用时在限流降级高级配置开启接入限流降级。如果不接入限流降级,在进入限流降级页面您无法进行规则管理、接口监控以及操作日志管理,页面会显示以下内容。
规则管理
接入限流降级功能后,您可在应用总览>限流降级> 规则管理页面配置各种限流降级规则,保障您的应用的可用性。
流控规则
流控规则的原理是监控应用或服务流量的QPS指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。适用于需要限制突发的流量,在尽可能处理请求的同时来保障服务不被击垮的场景。
在规则管理页面下流控规则页,点击“新增流控规则”按钮,在新增流控规则对话框配置流控规则。
选择或输入接口名称后,点击下一步进入配置防护规则:
参数 | 描述 |
---|---|
是否集群流控 | 开启集群流控,对集群内此资源的调用总量进行限制。 |
是否开启 | 打开开关表示启用该规则,关闭开关表示禁用该规则。 |
单机QPS阈值 | 触发对流控接口的统计维度对象的QPS阈值。 |
来源应用 | 该规则针对的来源应用,默认来源应用设为default,代表不区分来源应用。 |
统计维度 | 选择资源调用关系进行流控。 1,当前接口 :直接控制来自来源应用中调用来源的访问流量,如果来源应用为default则不区分调用来源。通常应用于流量匀速通过的场景。 2,关联接口 :控制当前资源的关联资源的流量。通常应用于资源争抢时,留足资源给优先级高接口的场景。 3,链路入口 :控制该资源所在的调用链路的入口流量。选择链路入口后需要继续配置入口资源,即该调用链路入口的上下文名称。通常应用于预热启动避免大流量冲击的场景 |
流控效果 | 选择流控方式来处理被拦截的流量。 1,快速失败: 达到阈值时,立即拦截请求。按照应用系统设置中的适配模块配置信息,进行内容返回。 2,预热启动: 需设置具体的预热时间。 如果系统在此之前长期处于空闲的状态,当流量突然增大的时候,该方式会让处理请求的速率缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。 默认会从设置的QPS阈值的1/3开始慢慢往上增加至设置的QPS值,多余请求会按照快速失败处理。 3,排队等待: 请求匀速通过,允许排队等待,通常用于请求调用削峰填谷等场景。需设置具体的超时时间,达到超时时间后请求会快速失败。 |
配置防护规则后,点击下一步进入配置限流行为:
配置行为主要是配置Fallback行为。Fallback行为定义某个埋点资源触发了某种规则(如流控、熔断、降级)后的处理行为。目前Fallback行为仅支持Web和RPC两种资源类型。如果您不需要自定义限流后的Fallback行为,则选择默认行为即可。点击确定即可新增流控行为。
隔离规则
隔离规则通过控制接口或依赖的并发线程数,来保证系统的稳定性。适用于在调用第三方服务时,防止过多的慢调用挤占正常调用的资源,避免服务不可用。
在规则管理页面下隔离规则页,点击“新增隔离规则”按钮,在新增隔离规则对话框配置流控规则。因为新增隔规则步骤和流控规则一样,此处只介绍新增隔离规则的配置防护规则步骤具体参数,其他参考流控规则。
参数 | 描述 |
---|---|
是否开启 | 打开开关表示启用该规则,关闭开关表示禁用该规则。 |
并发数阈值 | 资源的并发线程数(即该资源正在执行的线程数)阈值。 |
来源应用 | 该规则针对的来源应用,默认来源应用设为default,代表不区分来源应用。 |
统计维度 | 选择资源调用关系进行流控。 1,当前接口 :直接控制来自来源应用中调用来源的访问流量,如果来源应用为default则不区分调用来源。通常应用于流量匀速通过的场景。 2,关联接口 :控制当前资源的关联资源的流量。通常应用于资源争抢时,留足资源给优先级高接口的场景。 3,链路入口 :控制该资源所在的调用链路的入口流量。选择链路入口后需要继续配置入口资源,即该调用链路入口的上下文名称。通常应用于预热启动避免大流量冲击的场景。 |
熔断规则
熔断规则可以监控应用内部或者下游依赖的响应时间或异常比例,当达到指定的阈值时立即降低下游依赖的优先级。在指定的时间内,系统不会调用该不稳定的资源,避免应用受到影响,从而保障应用高可用性,当指定时间过后,再重新恢复对该资源的调用。用于避免局部不稳定因素(某个慢调用、异常服务)导致整体的雪崩。
参数 | 描述 |
---|---|
统计窗口时长 | 统计的时间窗口长度,取值范围为1秒~120分钟。 |
阈值类型 | 可选择慢调用比例、异常比例、异常个数阈值类型。 1,慢调用比例 : 需要设置允许的慢调用RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。 规则开启后,在单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。 2,异常比例 : 需要在降级阈值中设置触发熔断的异常比例。 规则开启后,在单位统计时长内业务异常数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。 3,异常个数: 需要在降级阈值中设置触发熔断的异常个数。 规则开启后,在单位统计时长内业务异常数目大于设置的最小请求数目,则接下来的熔断时长内请求会自动被熔断。 |
降级阈值 | 触发阈值类型的阈值。 |
熔断时长 | 即熔断触发后持续的时间。 资源进入熔断状态后,在配置的熔断时长内,请求都会快速失败。 |
是否开启 | 打开开关表示启用该规则,关闭开关表示禁用该规则。 |
最小请求数目 | 触发熔断的最小请求数。 |
熔断策略 | 熔断器进入恢复阶段(半开启状态)的恢复策略。 1,单次探测恢复: 经过熔断时长后,熔断器会对接下来的一个请求进行探测,若该请求符合预期(不为慢调用或没有异常),则结束熔断;否则重新回到熔断阶段。 2,渐进式恢复: 需要设置恢复阶段数和每步最小通过数目。 经过熔断时长后,熔断器按照设定的恢复阶段数进行渐进式恢复,若该阶段内请求达到一定量即每步最小通过数目,则触发检查。 检查的请求若都未超过阈值,则逐步提高允许通过的请求比例,直到请求完全恢复;若某一步的指标超出阈值,则重新回到熔断阶段。 |
主动降级规则
主动降级规则可以指定对某些接口进行降级,被降级的接口会触发自定义的降级行为而不会执行原有的逻辑。主要用于在流量高峰时保障核心功能而将非核心功能返回预先准备的数据。
参数 | 描述 |
---|---|
关联行为 | 统计表示开启该降级规则后,该接口调用的行为。 默认行为对应应用设置页面基础设置中的模块适配设置Web的配置。 |
若需要新增行为,单击“新增行为 ”,完成以下配置,然后单击“新增”:
参数 | 描述 |
---|---|
行为名称 | 该行为的名称。长度不超过128个字符,同个应用内名称不能重复。 |
针对的资源类型 | 支持Web和Rpc两种类型,此处仅为Web。 |
Web限流处理策略 | 定义Web接口访问触发某种规则后的行为表现。目前支持以下两种策略: 1,自定义返回: 需设置HTTP返回状态码、返回内容的格式和返回的内容。表示Web接口访问触发规则后返回自定义的内容。 2,跳转到指定页面: 需设置指定跳转的URL。表示Web接口访问触发规则后系统会跳转指定的页面URL。 |
HTTP返回状态码 | 默认为429。当Web限流处理策略为自定义返回时,需要填写。 |
返回content-type | 设置返回内容的格式为普通文本(TEXT)或JSON。当Web限流处理策略为自定义返回时,需要填写。 |
HTTP返回文本 | 输入当Web接口访问触发规则后返回的内容。当Web限流处理策略为自定义返回时,需要填写。 |
跳转地址 | 输入当Web接口访问触发规则后系统会跳转的页面URL。当Web限流处理策略为跳转到指定页面时,需要填写。 |
参数 | 描述 |
---|---|
行为名称 | 该行为的名称。长度不超过128个字符,同个应用内名称不能重复。 |
针对的资源类型 | 支持Web和Rpc两种类型,此处仅为Rpc。 |
缓存实例 | 是否缓存返回值。若开启,则会缓存生成的Fallback对象,在该行为触发时,均复用同一对象。 |
Rpc限流处理策略 | 定义Rpc接口访问触发某种规则后的行为表现。目前支持以下两种策略: 1,自定义返回: 自定义返回结果。需设置返回类型和返回的内容,表示Rpc接口访问触发规则后返回自定义的实体类。 2,自定义异常: 抛出自定义异常。需设置异常的类名和异常文本,表示Rpc接口访问触发规则后系统会返回指定的异常信息。 |
返回类型获取方式 | 填充返回值类名的方式,分别为: 1,手动输入: 选择手动输入模式,需要填写自定义返回值的全限定类名(返回值类名),然后单击校验进行有效性校验,校验通过后可以创建行为。 2,自动探测: 选择自动探测模式,需要选择创建RPC行为的接口方法(行为关联方法)。 控制台会根据选择的行为关联方法,自动填充方法返回值类名,然后填写完成对象内容(JSON格式)后可以创建行为。 |
行为关联类名 | 当返回类型获取方式为自动探测时,需要选择当前Rpc行为关联的接口方法,方法返回值类型即为当前自定义返回值的类型。 |
返回值类名 | 选择Rpc限流处理策略为自定义返回时,需填写的类名称路径。 |
对象内容 | 选择RPC限流处理策略为自定义返回时,填写当Rpc接口访问触发规则时返回结果的对象内容(JSON格式)。 |
异常类名 | 选择Rpc限流处理策略为自定义异常时,需填写的异常类名称路径。 |
异常信息文本 | 选择Rpc限流处理策略为自定义异常时,填写Rpc接口访问触发规则后抛出自定义异常的文本信息。 |
热点规则
热点规则通过分析统计参数,即资源调用过程中的调用次数较高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保护系统稳定性。适用于针对某些热点数据中访问频次最高的Top数据进行控制的场景。
参数 | 描述 |
---|---|
参数位置索引 | 埋点传入参数的索引位置。 |
统计维度 | 可选择通过请求数或并发线程数。 1,通过请求数: 限制一段时间内的调用次数。 2,并发数: 限制该资源调用的并发数。 |
统计周期时间 | 统计窗口时间长度(单位为秒)。 |
单机阈值 | 是作用于每个热点参数的阈值。 |
流控效果 | 当统计维度为通过请求数时,可以选择流控效果来处理被拦截流量。 1,快速失败: 达到阈值时,立即拦截请求。 该模式下可以额外设置一个缓冲请求数,即针对突发请求额外允许的请求数目。 2,排队等待: 请求匀速通过,允许排队等待,通常用于消息队列削峰填谷等场景。 需设置具体的超时时间,排队时会计算预计的排队时长,若超过最大超时时间则请求会直接被拒绝。 |
是否开启 | 打开开关表示启用该规则,关闭开关表示禁用该规则。 |
自适应流控
系统支持自适应流控或手动设置系统规则,自适应流控是根据系统的CPU使用率自动动态地调整应用程序的入口流量;系统规则是从整体维度手动设置规则,对应用入口流量进行控制。目的都是为了让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量状态下稳定运行。
参数 | 描述 |
---|---|
统计维度 | CPU使用率 : 当系统CPU使用率超过阈值即触发系统保护,阈值设置范围为0.0~1.0(代表0%~100%)。 Load : 限当系统的Load超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。 线程数: 当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。 入口平均RT: 当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。 入口总QPS: 当单台机器上所有入口流量的QPS达到阈值即触发系统保护。 |
阈值 | 对应统计维度的阈值。 |
是否开启 | 打开开关表示启用该规则,关闭开关表示禁用该规则。 |
接口监控
接口监控主要展示该应用所有接口的通过QPS、拒绝QPS、异常QPS、RT、并发数据等监控信息。
操作日志
操作日志记录限流降级相关操作日志,您可以查看所有的限流降级操作信息,如操作时间、类别、操纵内容和操作等。