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)规则。新增应用:在左侧导航栏,选择
。在限流降级页面,单击规则配置页签,然后在热点参数防护(RPC页签,单击新PC)点参数防护(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类型时,如果不选择接口类型,则绑定默认行为;选择接口类型并绑定相应类型行为后,不可修改。
单击新增。