应用服务网格

高可用能力构建

2025-08-14 02:08:11

在服务网格中使用本地限流

前提条件:

1. 开通云容器引擎

2. 开通服务网格实例

 

操作步骤:

我们以bookinfo应用为例演示本地限流能力,首先在default命名空间部署bookinfo应用

然后在default命名空间部署针对productpage服务的限流策略,token数量最大为5,每2秒重新填充5token:

apiVersion: istio.ctyun.cn/v1beta1

kind: LocalRateLimiter

metadata:

  name: productpage-limit

spec:

  workloadSelector:

    # 匹配工作负载

    labels:

      app: productpage

  context: SIDECAR_INBOUND

  statPrefix: http_local_rate_limiter

  configs:

    - name: productpage

      routeConfig:

        vhost:

          name: 'inbound|http|9080'

      rateLimitConfig:

        tokenBucket:

          maxTokens: 5

          tokensPerFill: 5

          fillInterval: 2s

        filterEnabled:

          runtimeKey: local_rate_limit_enabled

          defaultValue:

            numerator: 100

            denominator: HUNDRED

        filterEnforced:

          runtimeKey: local_rate_limit_enforced

          defaultValue:

            numerator: 100

            denominator: HUNDRED

        responseHeadersToAdd:

          - appendAction: OVERWRITE_IF_EXISTS_OR_ADD

            header:

              key: x-local-rate-limit

              value: 'true'

 

我们使用go-stress-testing工具验证效果,如下图所示,结果状态码中有200429(请求被限流);200的个数每2秒增加5个,符合我们设定的2秒重新填充5个token的设定;429状态码在持续增加;

单独请求productpage服务可以看到请求被限流的情况:


ENnJGpZInQTV