SOFAStack 微服务主要通过 SOFARPC 来实现服务的发布和引用,在 SOFAStack 微服务中的限流主要是针对 SOFARPC 框架。微服务的服务限流(Guardian)是一个限流组件,您可通过在业务系统中集成该组件,配置限流规则来提供限流服务,从而保证业务系统不会被大量突发请求击垮,提高系统稳定性。
前提条件
服务限流的规则配置依赖于动态配置推送,所以接入限流前必须先接入动态配置。详情请参见 新增动态配置。
操作步骤
登录 SOFAStack 控制台。
在左侧导航栏,选择 中间件 > 微服务平台 >微服务 > 服务治理。
单击 服务限流,然后单击 新增应用。
输入应用名称后,单击 确定。
在应用列表单击目标应用右侧的 添加规则,然后配置规则参数。
区域
参数
说明
基本信息
规则名称
配置限流规则的名称,用于描述规则。
限流类型
配置限流规则的方法,可选值:
接口方法:支持对某个具体的 RPC 接口或普通 Bean 的方法限流。
您需要在 限流对象 中配置接口路径名称和方法签名。
Web 页面:对基于 Spring MVC 的 Web 请求进行限流。
您需要在 限流对象 中配置请求 URI。
运行模式
配置限流规则的运行模式,可选值:
拦截模式:限流生效的模式,会根据配置的规则实际拦截请求。
监控模式:仅打印限流记录日志,不实际产生限流效果。
限流算法
配置限流规则的算法,可选值:
QPS 计数算法:通过限制单位时间段内允许的请求调用量进行限流。
扩展令牌桶算法:控制发送到网络上的数据的数目,并允许突发数据的发送。
有关算法的详细说明参见 限流算法说明。
限流后置操作
限流后操作
配置限流后进行的后续操作,可选值:
空配置:限流后不做任何处理,返回空值。
抛出异常:限流后返回异常信息。异常信息为填写的输入框内容。
仅当 限流类型 为 接口方法 时,支持配置。
跳转到指定页面:限流后跳转到指定的页面地址。
仅当 限流类型 为 Web 页面 时,支持配置。
页面 JSON 报文:限流后直接将指定的 JSON 字符串在 HTML Response 中返回。
默认返回内容为:
{success:false,error:"MAX_VISIT_LIMIT"}
仅当 限流类型 为 Web 页面 时,支持配置。
页面 XML 报文:限流后直接将特定的 XML 字符串在 HTML Response 中返回。
默认返回内容为:
<?xml version="1.0" encoding="GBK"?><alipay><is_success>F</is_success><error>MAX_VISIT_LIMIT</error></alipay>
仅当 限流类型 为 Web 页面 时,支持配置。
限流阈值
限流阈值
配置限流阈值,配置项如下:
条件模型:配置限速的条件。
可选值如下:
单位时间内服务访问次数或 Web 页面访问次数:根据单位时间内的请求数进行限流。
堆内存使用量:根据当前堆内存使用量进行限流。
CPU 负载:根据过去一分钟内的 CPU 平均负载进行限流。
并发线程数:根据单台机器上并发的线程数进行限流。
单位时间:打印限流日志的周期。对于单位时间内访问次数的限流条件,也表示统计周期。
单位为毫秒(ms)。最小值为 1000 ms。
限流阈值:根据选择的 条件模型 配置限流阈值,超过阈值的流量会被限速。
选择 单位时间内服务访问次数或 Web 页面访问次数 时:配置最大允许的 QPS 数。
选择 堆内存使用量 时:配置最大堆内存使用量,单位为 MB。
选择 CPU 负载 时:配置 CPU 的最大负载,数值为
100 * CPU 负载百分比
。选择 并发线程数 时:配置最大并发线程数。
流量类型:配置限流规则针对的流量类型。
可选值如下:
所有流量:对正常流量和压测流量均限流。
正常流量:仅对正常流量限流。
压测流量:仅对压测流量限流。
限流对象
根据选择的 限流类型 配置限流的对象名。
选择 接口方法 时,配置以下参数:
接口:配置限流的接口名称。支持 RPC 服务接口或配置了 Spring AOP 拦截器的 Bean。
方法:配置需要限流的方法。支持带参数或不带参数的方法签名。
参数关系:配置多个参数条件之间的逻辑关系。可选值为 AND(与)和 OR(或)。
选择 Web 页面 时,配置以下参数:
URI:需要限流的请求 URI,不包含域名和参数部分。
参数关系:配置多个参数条件之间的逻辑关系。可选值为 AND(与)和 OR(或)。
限流对象名配置完成后,您还需要添加参数条件。更多信息,请参见 配置限流对象方法签名。
配置完成后,根据需求选择推送方式:
提交:限速规则向所有机器推送限速规则。
灰度推送:单击后选择推送目标,限速规则仅推送给指定机器。
重要灰度推送的数据不会保存到数据库,只会保存在被推送到的服务器的内存中。
服务器重启后推送的规则被还原,仍使用灰度推送前的规则。
在应用列表单击目标应用左侧的加号,然后将目标规则的状态修改为 开启。
限速规则开启后,将根据推送配置将限速规则推送给所有机器或指定机器。您也可以根据需要让限速规则在指定机器上开启:
限速规则状态为 关闭 时:单击 灰度开启,然后选择开启限速规则的机器。
限速规则状态为 开启 时:单击 灰度关闭,然后选择关闭限速规则的机器。