全部产品

服务管控--限流

更新时间:2020-09-07 11:17:07

SOFAStack 微服务主要通过 SOFARPC 来实现服务的发布和引用,在 SOFAStack 微服务中的限流主要是针对 SOFARPC 框架。不同厂商的微服务有不同的框架,服务网格可以解决用户使用其他微服务框架的场景。为保证业务系统不会被大量突发请求击垮,服务网格仍需要限流操作来以提高系统稳定性。

服务网格的限流是通过 Mosn 实现的,对用户透明。

服务网格限流操作支持的框架包括:

  • SOFA
  • Dubbo
  • Spring Cloud

进入 SOFAStack 控制台,主要的限流业务逻辑包括:

添加限流规则

  1. 选择 SOFAStack 控制台 > 中间件 > 微服务平台 > 微服务 > 服务网格 > 服务管控,进入服务列表页。
  2. 在服务列表中,选择您想要限流的目标服务,点击其服务 ID,进入服务详情页。
  3. 切换至 服务限流 页签:
    • 如果所有服务提供者 IP 都未启用服务网格,则无法添加限流规则,需先发布应用并启用服务网格。
    • 如果有部分服务提供者 IP 已启用服务网格,或全部已启用服务网格,可直接开始添加限流规则。

      说明:对于其余未启用服务网格的部分服务提供者 IP,添加的限流规则对其不生效。

  4. 添加限流规则 窗口中,配置相应的规则信息。不同的服务类型,需要的规则信息也有所不同。
    • 规则名称:限流规则的名称
    • 应用:应用名称
    • 服务:应用服务名称
    • 服务类型:应用服务的类型
    • 方法:(SOFA、Dubbo 服务)服务方法名。
    • 请求类型:(Spring Cloud 服务)提供 4 种请求类型,包括 GET、POST、PUT 和 DELETE。
    • Path:(Spring Cloud 服务)表示 HTTP 协议路径,例如:http:host:port/pathpath 部分。支持 * 通配。
    • 限流类型:目前支持 QPS、最大并发数 2 种类型。
      • QPS:限流算法仅支持 令牌桶 算法,关于限流类型的更多信息,参见 参见 限流规则说明 > 令牌桶算法
      • 最大并发数:方法的最大并发数。
    • 运行模式:目前支持拦截模式和观察者模式。2 者的区别在于匹配流量超过设定的阈值时,触发的操作不同。
      • 拦截模式:触发限流。
      • 观察者模式:仅打印日志、不实际触发限流。
    • 限流阈值
      • 限流算法:目前仅支持 令牌桶 算法,即根据单位时间内的请求数进行限流。
      • 单位时间:打印限流日志的周期。对于单位时间内访问次数的限流条件,也表示统计周期。单位为毫秒(ms)。最小值为 1000 ms。
      • 限流阈值:即 QPS 计数值,单位时间内的请求数。
    • 流量精确匹配:目前支持系统字段、Header流量匹配。
      • 系统字段:支持调用方应用名、调用方 IP、服务方应用名、流量类型。
      • Header: 支持 Header 流量匹配。
  5. 点击 提交

管理限流规则

所添加的限流规则,将以列表的形式展示于 服务限流 页面,如下图所示。在列表中,您可以对限流规则进行如下操作:

  • 切换状态,设置限流规则的状态。
  • 点击编辑,更改规则配置。
  • 点击删除,删除限流规则。

限流规则展示