全部产品

服务限流

在高并发场景下,为保证在现有资源条件下服务正常运行,使用服务限流让请求和并发在应用可接受的范围内,达到高可用的目的。服务网格的限流是通过 MOSN 实现的,是对用户透明,支持统一的限流模型,并且在产品层增加了 trafficCondition 的流量匹配规则。

限流原理

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

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

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

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

  • inbound:流量流入服务端。

  • MS:微服务管控台。

  • DRM:分布式配置中心。

添加限流规则

  1. 登录 SOFAStack 控制台

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

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

    221222

    配置说明如下:

    配置项

    配置项明细

    配置值

    说明

    基本信息

    规则名称

    test

    支持中文、英文、数字、下划线。

    限流方向

    客户端限流

    限流方向分为服务端限流和客户端限流。

    • 服务端限流:表示规则在服务端生效,应用填写服务端的应用,服务和方法填写服务端的服务和方法,* 表示所有。

    • 客户端限流:表示规则在客户端生效,应用填写客户端的应用,服务和方法填写引用的服务端的服务和方法,* 表示所有。

    应用

    dubbo-echo-client

    选择一个客户端应用。

    服务

    com.alipay.sofa.ms.service.HelloService@dubbo

    限流的服务,* 表示所有。

    方法

    sayHi

    限流的方法,* 表示所有。

    限流规则

    限流类型

    QPS

    限流类型分为 QPS 和最大并发数。

    • QPS:每秒允许请求的最大访问量。

    • 最大并发数:同一时刻允许有多少线程访问。

    运行模式

    拦截模式

    运行模式分为拦截模式和观察者模式。

    • 拦截模式:限流规则生效。

    • 观察者模式:限流规则不生效,会在 MOSN 中打印限流日志。

    限流配置

    限流算法

    令牌桶算法

    服务限流里使用了 QPS 限流算法和令牌桶算法。

    • QPS 限流算法:通过限制单位时间段内调用量来限流。

    • 令牌桶算法:使用令牌桶(Token Bucket)算法来进行限流,详情请参见 令牌桶算法

    令牌桶系数

    1

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

    单位时间 ms

    1000

    单位为毫秒(ms)。

    限流阈值

    2

    表示 1 秒内的最大请求数为 2。

    流量精确匹配

    详细配置信息见下表。

    表示调用方 IP 为 192.168.5.127 且调用 dubbo-echo-client 服务的客户端进行限流。

    流量精确匹配详细配置如下表所示:

    满足匹配条件的流量才会使用到限流规则配置,多条匹配条件是与的关系。(如果填写了这个,先匹配流量精确匹配条件,符合条件的流量才会应用限流规则)

    配置项

    配置值1

    配置值2

    说明

    字段

    系统字段

    系统字段

    可以选择系统字段和请求头。

    • 系统字段

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

    • 请求头

      应用里用户自定义的请求头参数。

    字段名

    调用方应用名

    调用方 IP

    精确匹配的字段名。

    逻辑

    等于

    等于

    支持 等于、不等于、属于、不属于、正则表示式五种。

    字段值

    dubbo-echo-client

    192.168.5.127

    精确匹配的字段值。

编辑限流规则

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

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

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

  • 编辑:修改规则。

  • 删除:删除规则。