Serverless 应用引擎 SAE(Serverless App Engine) 集成 微服务引擎 MSE(Microservices Engine) 的限流降级能力,以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保障业务的稳定性,提供专业稳定的流量防护手段、秒级的流量水位分布分析功能。本文介绍如何设置限流降级的相关规则以及使用示例。
前提条件
微服务应用已开启限流降级功能。具体操作,请参见 设置限流降级 。
配置规则
配置流控规则
流控规则通过监控应用或服务流量的 QPS 指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 规则配置 页面。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 接口流控 页签,单击 新增流控规则 。 -
新增应用:在左侧导航栏,选择
。在 限流降级 页面,单击 规则配置 页签,然后在 接口流控 页签,单击 新增流控规则 。
-
-
在 新增流控防护规则 对话框,配置相关信息。
-
在 选择防护场景 配置向导,选择 服务类型 、 接口类型 和 接口名称 ,单击 下一步 。
-
在 配置防护规则 配置向导,配置相关信息,单击 下一步 。
配置项
说明
是否开启
开启表示规则创建成功后立即生效,默认关闭。
单机 QPS 阈值
触发对流控接口的统计维度对象的 QPS 阈值。
流控效果
选择流控方式来处理被拦截的流量。
-
快速失败 :达到阈值时,立即拦截请求。按照应用系统设置中的适配模块配置信息,进行内容返回。
-
排队等待 :请求匀速通过,允许排队等待,通常用于请求调用削峰填谷等场景。需设置具体的超时时间,达到超时时间后请求会快速失败。
-
-
在 配置防护行为 配置向导,设置 接口类型 和 关联行为 ,然后单击 新增 。
-
规则创建成功后,您可以在 接口流控 页签,对目标规则进行编辑、复制、删除等操作。
配置隔离规则
隔离规则通过控制接口或依赖的并发线程数,来保证系统的稳定性。
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 规则配置 页面。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 并发隔离 页签,单击 新增隔离规则 。 -
新增应用:在左侧导航栏,选择
。在 限流降级 页面,单击 规则配置 页签,然后在 并发隔离 页签,单击 新增隔离规则 。
-
-
在 新增隔离防护规则 对话框,配置相关信息。
-
在 选择防护场景 配置向导,选择 服务类型 、 接口类型 和 接口名称 ,单击 下一步 。
-
在 配置防护规则 配置向导,配置相关信息,单击 下一步 。
配置项
说明
是否开启
开启表示规则创建成功后立即生效,默认关闭。
并发数阈值
资源的并发线程数(即该资源正在执行的线程数)阈值。
-
在 配置防护行为 配置向导,设置 接口类型 和 关联行为 ,然后单击 新增 。
-
规则创建成功后,您可以在 并发隔离 页签,对目标规则进行编辑、复制、删除等操作。
配置熔断规则
熔断规则可以监控应用内部或者下游依赖的响应时间或异常比例。当达到指定的阈值时,系统会立即降低下游依赖的优先级。在指定的时间内,系统不会调用该异常资源,避免应用的不稳定运行,从而保障应用高可用性。指定时间过后,系统会重新恢复对该资源的调用。
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 规则配置 页面。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 熔断规则 页签,单击 新增熔断规则 。 -
新增应用:在左侧导航栏,选择
。在 限流降级 页面,单击 规则配置 页签,然后在 熔断规则 页签,单击 新增熔断规则 。
-
-
在 新增熔断防护规则 对话框,配置相关信息。
-
在 选择防护场景 配置向导,选择 服务类型 与 接口名称 ,单击 下一步 。
-
在 配置防护规则 配置向导,配置相关信息,单击 新增 。
配置项
描述
统计窗口时长
统计的时间窗口长度,取值范围为 1 秒~120 分钟。
最小请求数目
触发熔断的最小请求数目,若当前统计窗口内的请求数小于此值,即使达到熔断条件规则也不会触发。
阈值类型
选择以 慢调用比例(%) 或 异常比例(%) 作为阈值。
-
选择以 慢调用比例 作为阈值,需要设置允许的 慢调用 RT (即最大的响应时间),请求的响应时间大于该值则统计为慢调用。
在 熔断比例阈值 中设置触发熔断的慢调用比例。规则开启后,在单位统计时长内请求数目大于设置的 最小请求数目 ,并且慢调用的比例大于阈值,则接下来的 熔断时长(s) 内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的 慢调用 RT 则结束熔断,若大于设置的 慢调用 RT 则会再次被熔断。
-
选择以 异常比例 作为阈值,需要在 熔断比例阈值 中设置触发熔断的异常比例。
规则开启后,在单位统计时长内业务异常数目大于设置的 最小请求数目 ,并且异常的比例大于阈值,则接下来的 熔断时长(s) 内请求会自动被熔断。
熔断时长(s)
单击 显示高级选项 后配置。即熔断触发后持续的时间。资源进入熔断状态后,在配置的熔断时长内,请求都会快速失败。
熔断恢复策略
单击 显示高级选项 后配置。熔断器进入恢复阶段(半开启状态)的恢复策略。
-
单次探测恢复 :经过熔断时长后,熔断器会对接下来的一个请求进行探测,若该请求符合预期(不为慢调用或没有异常),则结束熔断;否则重新回到熔断阶段。
-
渐进式恢复 :需要设置 恢复阶段数 和 每步最小通过数目 。
-
经过熔断时长后,熔断器按照设定的恢复阶段数进行渐进式恢复,若该阶段内请求达到一定量即每步最小通过数目,则触发检查。检查的请求若都未超过阈值,则逐步提高允许通过的请求比例,直到请求完全恢复;若某一步的指标超出阈值,则重新回到熔断阶段。
-
请求比例 T=100/恢复阶段数 N,则第一阶段请求比例为 T,第二阶段为 2T,直到 100%。
-
例如恢复阶段数为 3,每步最小通过数目为 5,则三个阶段分别按照 33%、67%和 100%的比例放入请求,当每阶段的请求数目大于等于 5 时进行检查,若请求的指标未超阈值则进入下一恢复阶段,直至完全恢复。
-
-
-
规则创建成功后,您可以在 熔断规则 页签,对目标规则进行编辑、复制、删除等操作。
配置热点参数防护(RPC)规则
为应用配置热点规则后,系统将分析统计参数,即资源调用过程中的调用次数较高的参数,并根据配置的热点规则对包含热点参数的资源调用进行限流,保护系统稳定性。
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 规则配置 页面。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 热点参数防护(RPC) 页签,单击 新增热点参数防护(RPC)规则 。 -
新增应用:在左侧导航栏,选择 页签,单击 新 PC)点参数防护(RPC)规则 。
。在 限流降级 页面,单击 规则配置 页签,然后在 热点参数防护(RPC
-
-
在 新增热点参数防护(RPC)规则 对话框,配置相关信息。
-
在 选择防护场景 配置向导,选择 接口名称 ,单击 下一步 。
-
在 配置防护规则 配置向导,配置相关信息,单击 下一步 。
配置项
描述
参数位置索引
埋点传入参数的索引位置。对应
SphU.entry(xxx,args)
中的参数索引位置。例如SphU.entry(resourceName,Entry Type.IN,1,paramA,paramB)
埋点中,paramA
的参数索引是 0,paramB
的参数索引是 1。统计维度
可选择通过请求数或并发线程数。
-
通过请求数 :限制一段时间内的调用次数。
-
并发数 :限制该资源调用的并发数。
统计周期时间
统计窗口时间长度,单位为秒。例如统计窗口时长为 10 秒,QPS 阈值为 5 代表限制 10 秒内每个热点参数访问不超过 5 次。
单机阈值
作用于每个热点参数的阈值。
流控效果
当 统计维度 为 通过请求数 时,可以选择流控效果来处理被拦截的流量。
-
快速失败 :达到阈值时,立即拦截请求。该模式下可以额外设置一个 缓冲请求数 ,即针对突发请求额外允许的请求数目。
-
排队等待 :请求匀速通过,允许排队等待,通常用于消息队列削峰填谷等场景。需设置具体的超时时间,排队时会计算预计的排队时长,若超过最大超时时间则请求会直接被拒绝。例如, 单机阈值 配置为 5,则代表请求每 200 毫秒才能通过一个,多出的请求将排队等待通过。 超时时间 配置 1000 毫秒,则当前排队请求超过 5 个(>1000 毫秒)时,新到来的请求将会直接被拒绝。
是否开启
开启表示规则创建成功后立即生效,默认关闭。
-
-
在 配置防护行为 配置向导,设置 接口类型 和 关联行为 ,然后单击 新增 。
-
规则创建成功后,您可以在 热点参数防护(RPC) 页签,对目标规则进行编辑、复制、删除等操作。
配置热点参数防护(HTTP 请求)规则
热点参数防护规则(HTTP 请求)面向提供 Web 服务的应用,针对访问请求中的一些参数项进行精细化的流量控制,可以对请求中 IP、Host、Header、URL Param 等参数维度的资源调用进行流量控制,保障业务与系统的稳定性。
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 规则配置 页面。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 热点参数防护(HTTP 请求) 页签,单击增加 增热点参数防护(HTTP 请求) 。 -
新增应用:在左侧导航栏,选择
。在 限流降级 页面,单击 规则配置 页签,在 热点参数防护(HTTP 请求) 页签,单击 新增热点参数防护(HTTP 请求) 。
-
-
在 新增热点参数防护(HTTP 请求) 对话框,配置相关信息。
-
在 选择防护场景 配置向导,选择 接口名称 ,单击 下一步 。
-
在 配置防护规则 配置向导,配置相关信息,单击 下一步 。
配置项
说明
参数属性
针对所选 API 的参数属性进行流量控制。
-
Client IP :请求端的 IP 地址。
说明若请求经过代理,会优先尝试从 X-Forwarded-For 请求头中获取 IP 信息,如果其 IP 信息存在,将会使用该 IP 作为实际请求端 IP 地址。
-
Remote Host :请求端的 Host Header。
-
Header :根据指定的 HTTP Header 进行解析,如果填写某个具体的 Header Key,则该规则针对这个 Header Key 下面的热点值分别进行限制。选择 Header 后,可选择配置请求属性值的匹配策略,只有匹配该模式的请求属性值会纳入统计和流控。
-
URL 参数 :根据指定的 HTTP 请求参数进行解析,需要填写对应的参数名称。选择 URL 参数 后,可选择配置请求属性值的匹配策略,只有匹配该模式的请求属性值会纳入统计和流控。
阈值类型
默认为 请求数 。
阈值
触发对流控接口的统计维度对象的 QPS 阈值。设置时,需选择统计时间间隔,支持秒、分钟、小时和天 4 种维度。
例如,若阈值填写为 10,统计间隔选择 分 ,则表示每分钟对应的请求数目不超过 10 个。
流控方式
单击 显示高级选项 后配置。
-
快速失败 :当阈值类型为 QPS 时,被拦截的流量将快速失败,即达到阈值时,立即拦截请求。
说明被拦截拒绝掉的请求,将返回行为管理中配置的自定义信息,若未配置会返回默认行为,即 429 错误码加上默认文本信息。
-
排队等待 :当阈值类型为 QPS 时,被拦截的请求将匀速通过,允许排队等待。需设置具体的超时时间,预计达到超时时间的请求会立即失败,而不会排队。例如,QPS 配置为 10,则代表请求每 100 毫秒才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。
说明排队等待时,QPS 不要超过 1000(请求间隔 1 毫秒)。
Burst size
单击 显示高级选项 后配置。当 流控方式 选择为 快速失败 时,可以额外设置一个 Burst Size,即针对突发请求额外允许的请求数目。
超时时间
单击 显示高级选项 后配置。当 流控方式 选择为 排队等待 时,需设置具体的超时时间,单位为毫秒。例如,QPS 配置为 5,则代表请求每 200 毫秒才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。
是否开启
开启表示规则创建成功后立即生效,默认关闭。
-
-
在 配置防护行为 配置向导,设置 接口类型 和 关联行为 ,然后单击 新增 。
-
规则创建成功后,您可以在 热点参数防护(HTTP 请求 ) 页签,对目标规则进行编辑、复制、删除等操作。
管理行为
Web 行为可以在 Web 类型埋点资源触发了某种规则后,返回对应的自定义处理行为,例如,某个 Web 接口触发流控规则后返回 Blocked by Sentinel 的提示文本。
新增行为
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 行为管理 页签。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 行为管理 页签,单击 新增行为 。 -
新增应用:在左侧导航栏,选择
。在 限流降级 页面,单击 规则配置 页签,在 行为管理 页签,单击 新增行为 。
-
-
在 新增热点参数防护(HTTP 请求) 对话框,配置相关信息,然后单击 新建 。
配置项
说明
示例
行为名称
该行为的名称。长度不超过 128 个字符,同个应用内名称不能重复。
测试行为
针对的资源类型
选择为 Web 类型。
Web
Web 限流处理策略
定义 Web 接口访问触发某种规则后的行为表现。自定义返回:需设置 HTTP 返回状态码、返回内容的格式和返回的内容。表示 Web 接口访问触发规则后返回自定义的内容。
自定义返回
HTTP 返回状态码
默认为 429。当 Web 限流处理策略为自定义返回时,需要填写。
429
返回 content-type
设置返回内容的格式为 普通文本 或 JSON 。当 Web 限流处理策略为自定义返回时,需要填写。
JSON 字符串
HTTP 返回文本
输入当 Web 接口访问触发规则后返回的内容。当 Web 限流处理策略为自定义返回时,需要填写。
{"message": "blocked oops"}
新增的行为会显示在 行为管理 页签中,您可以对目标行为进行修改、删除等操作。
关联行为
-
登录 SAE 控制台 。
-
在左侧导航栏,单击 应用管理 ,在顶部菜单栏选择地域,然后在 应用列表 页面,单击目标应用名称。
-
进入 规则配置 页面。
-
存量应用:在左侧导航栏,选择
。在 规则配置 页面的 接口流控 页签,单击 新增流控规则 。 -
新增应用:在左侧导航栏,选择
。在 限流降级 页面,单击 规则配置 页签,然后在 接口流控 页签,单击 新增流控规则 。
-
-
完成 选择防护场景 和 配置防护规则 后,在 配置防护行为 区域,完成下列设置。
-
选择 接口类型 为 Web 。
-
从 关联行为 下拉列表,选择目标行为进行关联,或单击 新增行为 来创建新的行为进行关联。
说明-
如果您不需要自定义限流后的 Fallback 行为,选择默认行为即可,默认接口类型为空。
-
新增规则时,如果当前接口已有绑定行为,后续绑定新的行为将覆盖接口下已有的行为。
-
选择 Fallback 类型时,如果不选择接口类型,则绑定默认行为;选择接口类型并绑定相应类型行为后,不可修改。
-
-
单击 新增 。
使用场景
场景 1:削峰填谷,使流量匀速通过
场景 2:保障自身资源充足
场景 3:慢调用熔断
场景 4:异常熔断
场景 5:秒杀场景
场景 6:调用请求频繁,占用较多系统资源
场景 7:热点商品秒杀
场景 8:防止恶意刷单