活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      应用服务网格

      应用服务网格

        • 产品动态与公告
        • 产品简介
        • 产品定义
        • 产品优势
        • 应用场景
        • 产品规格
        • 名词解释
        • 使用限制
        • 购买指南
        • 计费说明
        • 订购与退订
        • 欠费与续费说明
        • 快速入门
        • 入门概述
        • 创建应用服务网格实例
        • 部署bookinfo应用到CSM实例
        • 通过云原生网关访问bookinfo应用
        • 使用istio资源实现版本流量路由
        • 用户指南
        • 实例权限及标签管理
        • 网格管理
        • 网格列表
        • 全局Service管理
        • 全局命名空间
        • 网格状态
        • 网格诊断
        • 升级管理
        • 金丝雀升级
        • 访问网格CRD资源
        • sidecar管理
        • 安装Sidecar代理
        • 网格CNI插件
        • 集群与工作负载
        • 服务条目管理
        • 容器集群管理
        • Kubernetes服务管理
        • 服务列表
        • 服务基础信息
        • 服务版本管理
        • 服务访问方式
        • 服务流量管理
        • 流量管理中心
        • 虚拟服务
        • 目标规则
        • 本地限流
        • 流量标签
        • 全链路灰度
        • 概述
        • 全链路灰度实现原理
        • 泳道组及泳道管理
        • 全链路灰度功能体验
        • 路由级熔断
        • 全局限流
        • 高可用能力构建
        • 多协议治理
        • gRPC协议治理
        • Dubbo协议治理
        • 扩展中心
        • 服务网格数据面扩展概述
        • EnvoyFilter CRD说明
        • EnvoyFilterTemplate和EnvoyFilterTemplateBinding CRD说明
        • 使用自定义EnvoyFilter
        • 使用插件市场扩展网格能力
        • 内置插件说明
        • 调整代理请求和响应缓存大小插件
        • 调整HTTP请求头尺寸限制插件
        • 设置允许升级的协议连接插件
        • 设置http2的初始流量窗口大小插件
        • 解析JWT Payload的字段到请求头插件
        • 自定义错误页面插件
        • 自定义x-request-id操作插件
        • 直接响应插件
        • 增加HTTP响应头插件
        • 在访问日志中打印HTTP body插件
        • 在响应头中增加请求头信息插件
        • 保留请求与响应头部大小写插件
        • 网格安全中心
        • 网格安全概述
        • 工作负载身份
        • 对等身份认证
        • 请求身份认证
        • 授权策略
        • 自定义授权服务
        • CSM安全策略
        • CSM安全策略概述
        • OIDC单点登录
        • JWT认证策略
        • 黑白名单策略
        • 自定义授权服务策略
        • 授权控制示例
        • 自定义授权服务
        • 使用JWT认证授权
        • 使用OPA策略引擎实现访问控制
        • OPA策略
        • API审计
        • 可观测管理中心
        • 日志中心
        • 服务监控
        • 链路追踪
        • 网格优化中心
        • Sidecar资源
        • 自适应配置分发
        • 功能介绍及使用
        • 自适应配置分发优化效果
        • 服务发现范围
        • 数据面ebpf加速
        • 网关
        • 入口网关
        • 出口网关
        • 网关规则
        • 证书管理
        • API参考
        • API使用说明
        • 最佳实践
        • 应用服务网格配置建议
        • 使用云原生网关和应用服务网格实现全链路灰度发布
        • 应用服务网格对接Nacos注册中心
        • 使用SDK操作istio资源
        • 常见问题
        • 计费类
        • 操作类
        • 应用服务网格CSM控制面部署在哪里?
        • 应用服务网格CSM开通失败,提示xx资源已存在
        • 如何删除云容器引擎集群上处于Terminating状态的命名空间?
        • 为什么加入网格的pod停止时会有被调或者主调失败的情况?
        • 为什么目标规则配置不生效?
        • 多集群的命名空间是什么关系?
        • 服务网格对于Service的定义是否有要求?
        • sidecar内存持续升高有什么解决办法?
        • 为什么开通服务网格之后,网格控制面组件启动失败?
        • 为什么注入了sidecar,但是流量拦截没生效?
        • 如何开启服务网格IPv6功能?
        • 相关协议
        • 天翼云应用服务网格服务协议
        • 天翼云应用服务网格服务等级协议
          无相关产品

          本页目录

          帮助中心应用服务网格用户指南流量管理中心全局限流
          全局限流
          更新时间 2024-11-13 17:39:02
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2024-11-13 17:39:02
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本章节介绍应用服务网格CSM的全局限流功能

          一、概要

          单机限流可以解决单个服务实例的限流问题,在分布式环境中同一个服务往往存在多个实例,单机限流缺少全局视角无法感知整体系统状态。应用服务网格提供了全局限流能力,支持在ingress网关和sidecar实现全局限流,以下是全局限流相关的说明。

          二、全局限流架构

          全局限流架构图如下,在Ingress网关和sidecar处均可配置全局限流策略,请求经过数据面代理时,数据面请求外部的全局限流服务判断本次请求放行或拦截。

          当前数据面采用Envoy实现,这里的全局限流服务也是遵循Envoy规范的gRPC服务,Envoy社区也提供了一个实现参考,具体可以查看envoyproxy/ratelimit项目。

          image.png

          三、全局限流使用配置说明

          应用服务网格封装了Envoy全局限流能力,定义了GlobalRateLimiter K8s CRD,实现Ingress网关和Sidecar全局限流能力;您可以在应用服务网格控制台-》流量管理中心-》全局限流 菜单下管理全局限流策略。

          例如要对Ingress网关做全局限流,可以配置:

          apiVersion: istio.ctyun.cn/v1beta1
          kind: GlobalRateLimiter
          metadata:
            name: gateway-limit
          spec:
            workloadSelector:
              labels:
                istio: ingressgateway
            context: GATEWAY
            rateLimitService:
              clusterName: outbound|8081||ratelimit.istio-system.svc.cluster.local
              failureModeDeny: true
              timeout: 10s
            configs:
              - routeConfig:
                  vhost:
                    name: ""
              # 针对ingressgateway网关,对访问路径/ratelimit限制每秒最多10次,其他路径限制每秒100次
                rateLimitConfigs:
                  - limit:
                      requests_per_unit: 100
                      unit: second
                  - limit:
                      requests_per_unit: 10
                      unit: second   
                    match:
                      - name: :path
                        exact_match: /ratelimit
                        match_source: HEADER
          

          GlobalRateLimiter配置说明如下:

          字段 类型 必选 说明
          workloadSelector WorkloadSelector no 一组标签key-value对,用于选中需要执行限流的数据面
          context PatchContext no 数据面生效的场景,支持四种类型:
          SIDECAR_INBOUND:sidecar入流量方向生效
          SIDECAR_OUTBOUND:sidecar出流量方向生效
          GATEWAY:网关处生效
          ANY:匹配所有
          默认为ANY
          RateLimitService RateLimitService no 全局限流服务定义,默认为ratelimit.default.svc.cluster.local服务,8081端口,超时时间为10秒
          Configs []*GlobalConfig no 限流配置

          RateLimitService定义:

          字段 类型 必选 说明
          ClusterName string no istio中的全局限流服务名称,如outbound|8081||ratelimit.default.svc.cluster.local
          FailureModeDeny bool no 调用全局限流服务失败时的行为控制,设置为true时如果调用全局限流服务失败,则请求会被拦截;默认为false
          Timeout string no 调用全局限流服务的超时时间,默认为10s

          GlobalConfig定义:

          字段 类型 必选 说明
          RouteConfig RouteConfigurationMatch no 对应EnvoyFilter中的configPatches.match.routeConfiguration,用于实现virtual host和route匹配
          RateLimitConfigs []*GlobalRateLimit no 匹配到虚拟主机和路由后执行的限流策略

          RouteConfigurationMatch定义:

          字段 类型 必选 说明
          Vhost RouteConfigurationMatch_VirtualHostMatch no istio中的全局限流服务名称,如outbound|8081||ratelimit.default.svc.cluster.local

          RouteConfigurationMatch_VirtualHostMatch定义:

          字段 类型 必选 说明
          Name string no 匹配的虚拟主机名称
          Route RouteConfigurationMatch_RouteMatch no 路由匹配条件

          RouteConfigurationMatch_RouteMatch定义:

          字段 类型 必选 说明
          Name string no 匹配的路由名称

          GlobalRateLimit定义:

          字段 类型 必选 说明
          Limit GlobalRateLimitConfig no 限流值配置
          Match []*GlobalRateLimitMatcher no 限流匹配条件配置,多个条件之间是AND关系

          GlobalRateLimitConfig定义:

          字段 类型 必选 说明
          RequestsPerUnit uint32 no 限流值
          Unit string no 限流时间单位,用于定义限流统计时间窗口,如second,minute

          GlobalRateLimitMatcher定义:

          字段 类型 必选 说明
          Name string no 匹配字段名称
          RegexMatch string no 正则匹配,对头部和query匹配生效
          ContainsMatch string no 包含匹配,对头部和query匹配生效
          ExactMatch string no 精确匹配,对头部、query和IP匹配生效
          PrefixMatch string no 前缀匹配,对头部和query匹配生效
          SuffixMatch string no 后缀匹配,对头部和query匹配生效
          PresentMatch bool no 存在匹配,仅对头部匹配生效,如果为true,目标头部存在则匹配
          InvertMatch bool no 反向匹配,基于前面的匹配结果取反作为最终匹配的结果
          MatchSource string no 匹配数据源,支持HEADER,QUERY、IP
          注意

          任何一个匹配规则只能选择一种匹配策略。

          四、全局限流体验

          部署全局限流服务

          我们才有envoy官方实现的全局限流服务envoyproxy/ratelimit,使用configmap管理限流服务配置,同时还依赖redis,具体配置如下

          apiVersion: v1
          kind: Service
          metadata:
            name: redis
            labels:
              app: redis
          spec:
            ports:
            - name: redis
              port: 6379
            selector:
              app: redis
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: redis
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: redis
            template:
              metadata:
                labels:
                  app: redis
              spec:
                containers:
                - image: registry-huadong1.crs-internal.ctyun.cn/mstools/redis:alpine
                  imagePullPolicy: IfNotPresent
                  name: redis
                  ports:
                  - name: redis
                    containerPort: 6379
                restartPolicy: Always
                serviceAccountName: ""
          ---
          apiVersion: v1
          kind: ConfigMap
          metadata:
            name: ratelimit-config
          data:
            config.yaml: |
              domain: gateway-ratelimit
              descriptors:
                - key: PATH
                  value: "/gateway"
                  rate_limit:
                    unit: minute
                    requests_per_unit: 2
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: ratelimit
            labels:
              app: ratelimit
          spec:
            ports:
            - name: http-port
              port: 8080
              targetPort: 8080
              protocol: TCP
            - name: grpc-port
              port: 8081
              targetPort: 8081
              protocol: TCP
            - name: http-debug
              port: 6070
              targetPort: 6070
              protocol: TCP
            selector:
              app: ratelimit
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: ratelimit
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: ratelimit
            strategy:
              type: Recreate
            template:
              metadata:
                labels:
                  app: ratelimit
              spec:
                containers:
                - image: registry-huadong1.crs-internal.ctyun.cn/mstools/envoyratelimit
                  imagePullPolicy: IfNotPresent
                  name: ratelimit
                  command: ["/bin/ratelimit"]
                  env:
                  - name: LOG_LEVEL
                    value: debug
                  - name: REDIS_SOCKET_TYPE
                    value: tcp
                  - name: REDIS_URL
                    value: redis:6379
                  - name: USE_STATSD
                    value: "false"
                  - name: RUNTIME_ROOT
                    value: /data
                  - name: RUNTIME_SUBDIRECTORY
                    value: ratelimit
                  - name: RUNTIME_WATCH_ROOT
                    value: "false"
                  - name: RUNTIME_IGNOREDOTFILES
                    value: "true"
                  - name: HOST
                    value: "::"
                  - name: GRPC_HOST
                    value: "::"
                  ports:
                  - containerPort: 8080
                  - containerPort: 8081
                  - containerPort: 6070
                  volumeMounts:
                  - name: config-volume
                    mountPath: /data/ratelimit/config
                volumes:
                - name: config-volume
                  configMap:
                    name: ratelimit-config
          

          部署业务服务

          部署nginx作为业务服务,请基于当前注入策略配置命名空间和pod的标签,确保nginx pod注入sidecar,如下

          apiVersion: v1
          kind: Service
          metadata:
            name: ngmtls
            labels:
              app: ngmtls
              service: ngmtls
          spec:
            ports:
            - port: 8080
              targetPort: 80
              name: http
            selector:
              app: ngmtls
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: ngmtls
            labels:
              app: ngmtls
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: ngmtls
                name: ngmtls
            template:
              metadata:
                labels:
                  app: ngmtls
                  name: ngmtls
                  source: CCSE
              spec:
                containers:
                - name: ngmtls
                  image: registry-huadong1.crs-internal.ctyun.cn/mstools/nginx:1.26-alpine-perl-mtls
                  imagePullPolicy: IfNotPresent
                  ports:
                  - containerPort: 80
                  - containerPort: 443
          

          创建ingress网关

          创建Ingress网关并绑定ELB,系统自动创建istio Gateway资源,如下

          image.png

          image.png

          配置网关VirtualService

          在VirtualService中指定路由名称为ngroute,匹配路径/index.html,转发到我们部署好的nginx服务

          image.png

          通过浏览器访问/index.html可以看到返回正常的页面

          image.png

          网关VirtualHost限流

          在网关所属的命名空间创建全局限流策略(通过workloadSelector选中网关工作负载),匹配网关的vhost(名称为"")针对/index.html的访问限流每秒2次

          apiVersion: istio.ctyun.cn/v1beta1
          kind: GlobalRateLimiter
          metadata:
            name: gateway-limit
          spec:
            workloadSelector:
              labels:
                gateway-unique-name: "cce-primary.csmgw.ingressgateway.gw1112"
            context: GATEWAY
            rateLimitService:
              clusterName: outbound|8081||ratelimit.ratelimit.svc.cluster.local
              failureModeDeny: true
              timeout: 10s
            configs:
              - routeConfig:
                  vhost:
                    name: ""
              # 针对ingressgateway网关,对访问路径/index.html限制每秒最多2次,其他路径限制每秒100次
                rateLimitConfigs:
                  - limit:
                      requests_per_unit: 100
                      unit: second
                  - limit:
                      requests_per_unit: 2
                      unit: second   
                    match:
                      - name: :path
                        exact_match: /index.html
                        match_source: HEADER
          

          创建完成后,打开配置编辑页面可以看到Status字段增加了限流配置,envoyproxy/ratelimit服务可以读取这些配置并执行对应的限流策略;

          将这些配置拷贝到全局限流服务的configmap并重启全局限流服务。

          image.png

          连续请求/index.html页面,请求到达限流阈值后可以看到后端返回了HTTP 429错误

          image.png

          网关Route限流

          以下配置匹配网关的vhost和route,执行指定的限流策略,如我们在网关配置的路由为ngroute,可以配置匹配该路由的限流策略,如下

          apiVersion: istio.ctyun.cn/v1beta1
          kind: GlobalRateLimiter
          metadata:
            name: gateway-limit
          spec:
            workloadSelector:
              labels:
                gateway-unique-name: "cce-primary.csmgw.ingressgateway.gw1112"
            context: GATEWAY
            rateLimitService:
              clusterName: outbound|8081||ratelimit.ratelimit.svc.cluster.local
              failureModeDeny: true
              timeout: 10s
            configs:
              - routeConfig:
                  vhost:
                    name: ""
                    route:
                      name: "ngroute"  # 该名称需要和virtualservice下的route name一致
              # 针对default虚拟服务路由配置限流规则,对访问路径/index.html限制每秒最多2次,其他路径限制每秒100次
                rateLimitConfigs:
                  - limit:
                      requests_per_unit: 100
                      unit: second
                  - limit:
                      requests_per_unit: 2
                      unit: second     
                    match:
                      - name: :path
                        exact_match: /index.html
                        match_source: HEADER
          

          Sidecar VirtualHost限流

          全局限流策略也支持在Sidecar生效,只需要通过workloadSelector选中sidecar所在的工作负载,指定sidecar context(SIDECAR_INBOUND或者SIDECAR_OUTBOUND,一般配置为SIDECAR_INBOUND,即被调服务入口处限流)。

          Sidecar vhost限流配置策略如下

          apiVersion: istio.ctyun.cn/v1beta1
          kind: GlobalRateLimiter
          metadata:
            name: ng-limit
          spec:
            workloadSelector:
              labels:
                app: "ngmtls"
            context: SIDECAR_INBOUND
            rateLimitService:
              clusterName: outbound|8081||ratelimit.ratelimit.svc.cluster.local
              failureModeDeny: true
              timeout: 10s
            configs:
              - routeConfig:
                  vhost:
                    name: inbound|http|8080
               # 对访问路径/index.html限制每秒最多2次,其他路径限制每秒100次
                rateLimitConfigs:
                  - limit:
                      requests_per_unit: 100
                      unit: second
                  - limit:
                      requests_per_unit: 2
                      unit: second       
                    match:
                      - name: :path
                        exact_match: /index.html
                        match_source: HEADER
          

          Sidecar Route限流

          相比于vhost限流,增加了路由名称的匹配

          apiVersion: istio.ctyun.cn/v1beta1
          kind: GlobalRateLimiter
          metadata:
            name: ng-limit
          spec:
            workloadSelector:
              labels:
                app: "ngmtls"
            context: SIDECAR_INBOUND
            rateLimitService:
              clusterName: outbound|8081||ratelimit.ratelimit.svc.cluster.local
              failureModeDeny: true
              timeout: 10s
            configs:
              - routeConfig:
                  vhost:
                    name: inbound|http|8080
                    route:
                      name: default
               # 对访问路径/index.html限制每秒最多2次,其他路径限制每秒100次
                rateLimitConfigs:
                  - limit:
                      requests_per_unit: 100
                      unit: second
                  - limit:
                      requests_per_unit: 2
                      unit: second         
                    match:
                      - name: :path
                        exact_match: /index.html
                        match_source: HEADER
          
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  路由级熔断
          下一篇 :  高可用能力构建
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明