全部产品

控制台配置限流规则

更新时间:2020-11-25 16:28

SOFAStack 微服务主要通过 SOFARPC 来实现服务的发布和引用,在 SOFAStack 微服务中的限流主要是针对 SOFARPC 框架。微服务的服务限流(Guardian)是一个限流组件,您可通过在业务系统中集成该组件,配置限流规则来提供限流服务,从而保证业务系统不会被大量突发请求击垮,提高系统稳定性。

限流目标与范围

  • 支持对 RPC 接口和普通 Bean 的方法进行限流。
  • 支持方法限流和方法参数条件限流,参数条件限流支持 MVEL 的完整能力。
  • 支持多个方法合并限流。
  • 支持对 Web 请求以及 Web 请求的参数条件限流。

功能特性

  • 支持监控模式和拦截模式。
  • 支持切换限流算法:QPS 计数算法和令牌桶算法。
  • 支持多种限流条件:单位时间计数、堆内存使用量、CPU 负载、并发线程数。
  • 支持多种限流后置处理,包括空处理(丢弃调用)、抛出异常等。

依赖

服务限流的规则配置依赖于动态配置推送,所以接入限流前必须先接入动态配置。

限流操作

  1. 选择 SOFAStack 控制台 > 中间件 > 微服务平台 > 经典微服务 > 服务治理,进入服务治理页。
  2. 点击 服务限流 页签,可以实现下述功能:
    • 查询应用:根据应用名,查询对应的限流规则。
    • 新增应用:添加一个应用,并对该应用进行限流操作。新增空白应用.png
  3. 对新增应用进行操作:

    • 新建限流规则
    • 推送记录:查看推送记录。用户推送限流规则后,在推送记录里会保存一份限流规则快照。
    • 更多:可以导入和导出限流规则。
    • 编辑限流规则

    新建限流规则

    新增限流规则.png

    • 基本信息
      • 规则名称:限流规则的名称。
      • 限流类型:包括接口方法和 Web 页面两种。
      • 运行模式:目前支持拦截模式和监控模式。2 者的区别在于满足限流条件时,触发的操作不同。
        • 拦截模式:触发限流。
        • 监控模式:仅打印日志、不实际触发限流。
      • 限流算法:目前支持 QPS 计数算法、扩展令牌桶算法。
        • QPS:单位时间内请求的计数算法。关于限流算法的更多信息,参见 限流算法介绍
        • 扩展令牌桶算法:扩展指的是允许令牌桶周期超过 1s,允许拉长限流周期。关于限流算法的更多信息,请参见 限流算法介绍
    • 限流后操作:支持的限流后操作包括下述内容。
      • 空处理:不做任何处理,直接返回。
      • 抛出异常:抛出固定的异常类型,异常信息可以自定义。
      • 跳转到指定页面:重定向到指定页面。
      • 页面 JSON 报文:在页面返回 JSON 报文。
      • 页面 XML 报文:返回 XML 报文。
    • 限流阈值:可以添加的阈值内容包括下述几个方面。
      添加限流阈值.png
      • 条件模型
        • 单位时间内服务或 Web 页面访问次数:表示根据单位时间内的请求数进行限流。
        • 堆内存使用量:表示根据当前堆内存使用量进行限流。
        • CPU 负载:表示根据过去一分钟的 CPU 负载进行限流。
        • 并发线程数:表示根据当前匹配上的并发线程数进行限流。
      • 单位时间:不小于 1000 毫秒。
        • 表示打印限流日志周期。
        • 如果作为单位时间内访问次数的条件,则表示统计周期。
      • 流量类型:支持的限流流量类型包括下述内容。
        • 所有流量:对所有流量限流。
        • 正常流量:只对正常流量限流。
        • 压测流量:只对压测流量限流。
      • 限流对象:可添加具体的限流对象。
      • 生效方式
        • 提交:全量推送。
        • 灰度推送:限流规则仅在部分机器上生效。

编辑限流规则

限流规则示例
编辑限流规则.png

对创建的每条限流规则,可以进行下述操作:

  • 全局开关:只有打开全局开关,限流规则才会生效。
  • 灰度开启:开启灰度。
  • 详情:查看限流规则详情。
  • 修改:修改规则。
  • 删除:删除规则。