全部产品

服务限流

服务网格的限流是通过 MOSN 实现的,是对用户透明,支持统一的限流模型,并且在产品层增加了 trafficCondition 的流量匹配规则。

限流原理

服务网格限流操作支持的框架包括:SOFA、Dubbo 和 Spring Cloud。

服务限流通过微服务管控台下发限流的动态配置到 MOSN,MOSN 根据 QPS 和最大并发数触发限流,限流可在客户端/服务端生效。

原理图如下:服务网格-限流.png

  • outbound:流量从客户端发出。

  • inbound:流量流入服务端。

  • MS:微服务管控台。

  • DRM:分布式配置中心。

添加限流规则

  1. 登录 SOFAStack 控制台

  2. 单击 中间件 > 微服务平台 > 服务网格 > 服务治理,进入服务治理页面。

  3. 单击 服务限流 页签,添加限流规则。

限流1.png限流2.png

  • 规则名称:限流规则的名称。

  • 应用:应用名称。

  • 限流方向

    • 服务端限流:规则在服务端生效,应用、服务、方法信息都为服务端对应信息,* 表示所有。

    • 客户端限流:规则在客户端生效,应用、服务、方法信息都为客户端端对应信息,* 表示所有。

  • 服务:应用服务名称。可以通过切换输入模式来选择手动输入或从下拉框选择。

  • 方法:待限流服务的方法名。只有填写服务后,方法框才会弹出。

  • 限流规则:可以添加多条限流规则。

    • 限流类型:目前支持 QPS、最大并发数 2 种类型。

      • QPS 限流:单位时间内请求的计数算法。限流算法仅支持 令牌桶 算法,关于限流类型的更多信息请参见 限流规则说明 > 令牌桶算法

        • 限流算法:令牌桶。

        • 令牌桶系数:默认为 1,会往桶里放令牌,最大值令牌数为限流的阈值,调用接口必须先获取令牌。

        • 单位时间:毫秒级。

        • 限流阈值:单位时间内能够通过的请求数。

      • 最大并发数:允许访问的最大请求数量,超过阈值就限流。

    • 运行模式:目前支持拦截模式和观察者模式。2 者的区别在于匹配流量超过设定的阈值时,触发的操作不同。

      • 拦截模式:会触发限流。

      • 观察者模式:仅打印日志、不实际触发限流。

    • 限流阈值:允许的最大并发请求数量。

    • 流量精确匹配:满足匹配条件的流量才会使用到这份熔断规则配置,多条匹配条件是 的关系。

      • 系统字段

        • 支持流量类型、调用方应用名、调用方 IP、服务方应用名。

        • 在逻辑上,支持等于、不等于、属于、不属于、正则等表示方式。

      • 请求头: 应用里的请求参数信息。

  • 限流粒度

    • 对应用的所有服务进行限流:服务和方法名为 *。

    • 对应用的某一个服务进行限流:方法名为 *。

    • 对服务的某一个方法进行限流:方法名为 对应具体方法名

编辑限流规则

添加的限流规则,将以列表的形式展示于 服务限流 页面,如下图所示:编辑限流规则1.png

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

  • 状态:只有处于打开状态,限流规则才会生效。

  • 编辑:修改规则。

  • 删除:删除规则。