---

title: Envoy 全局限流与 Redis 集成(Global Rate Limit 与验证)

date: 2025-11-26

keywords:

  • Global Rate Limit
  • Envoy
  • Redis
  • 限流服务
  • 令牌桶

description: 使用Envoy外部限流服务实现全局限流并接入Redis存储配额,按维度与策略统一控制入口流量,提供配置与验证方法。

tags:

  • API 网关
  • Envoy
  • Global Rate Limit
  • Redis
  • 云原生
  • 令牌桶
  • 限流服务

categories:

  • 文章资讯
  • 编程技术

---

概述

全局限流由Envoy在请求进入时调用外部限流服务,根据维度与配额统一决策。结合Redis存储与令牌桶策略,支持跨实例一致限流与审计。

关键实践与参数

  • 过滤器: envoy.filters.http.ratelimit
  • 服务端: gRPC限流服务, 基于Redis存储配额
  • 维度: 按IP、客户端Key、路径或用户ID
  • 策略: 令牌桶速率与突发, 不同路由分级限流
  • 审计: 记录命中与拒绝事件

示例/配置/实现

static_resources:
  listeners:
    - name: ingress
      address: { socket_address: { address: 0.0.0.0, port_value: 8080 } }
      filter_chains:
        - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                route_config:
                  virtual_hosts:
                    - name: app
                      domains: ["*"]
                      routes:
                        - match: { prefix: "/api" }
                          route: { cluster: api }
                http_filters:
                  - name: envoy.filters.http.ratelimit
                    typed_config:
                      "@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit
                      domain: api
                      rate_limit_service:
                        grpc_service:
                          envoy_grpc: { cluster_name: ratelimit }
                        transport_api_version: V3
                  - name: envoy.filters.http.router
  clusters:
    - name: api
      type: LOGICAL_DNS
      load_assignment: { cluster_name: api, endpoints: [ { lb_endpoints: [ { endpoint: { address: { socket_address: { address: api.svc, port_value: 80 } } } } ] } ] }
    - name: ratelimit
      type: LOGICAL_DNS
      load_assignment: { cluster_name: ratelimit, endpoints: [ { lb_endpoints: [ { endpoint: { address: { socket_address: { address: ratelimit.svc, port_value: 8081 } } } } ] } ] }
# 限流服务配置(示意)
descriptors:
  - key: remote_address
    rate_limit:
      unit: second
      requests_per_unit: 10
  - key: path
    value: /api
    rate_limit:
      unit: second
      requests_per_unit: 100

验证

  • 全局一致: 多实例下限流命中比例一致
  • 维度策略: 不同维度命中对应配额与拒绝
  • 后端稳定: 在高并发下后端错误率下降
  • 审计: 限流服务与Envoy日志记录命中与拒绝计数

注意事项

  • 限流服务需高可用与低延迟
  • 维度与策略需避免误杀正常流量
  • 与本地限流协同分层治理
  • 设置告警监测限流异常

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部