活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 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功能?
        • 相关协议
        • 天翼云应用服务网格服务协议
        • 天翼云应用服务网格服务等级协议
          无相关产品

          本页目录

          帮助中心应用服务网格用户指南流量管理中心路由级熔断
          路由级熔断
          更新时间 2025-02-21 10:02:50
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2025-02-21 10:02:50
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本文档介绍路由级熔断功能的背景,生效方式以及验证效果。

          背景信息

          社区Istio提供DestinationRule进行熔断配置,以官方的一个demo为例

          apiVersion: networking.istio.io/v1
          kind: DestinationRule
          metadata:
            name: reviews-cb-policy
          spec:
            host: reviews.prod.svc.cluster.local
            trafficPolicy:
              connectionPool:
                tcp:
                  maxConnections: 100
                http:
                  http2MaxRequests: 1000
                  maxRequestsPerConnection: 10
              outlierDetection:
                consecutive5xxErrors: 7
                interval: 5m
                baseEjectionTime: 15m
            
          

          可以看出DestinationRule提供的熔断功能,通过Envoy连接池实现对上游集群的限流熔断,并周期性检查一些异常指标,例如5xx错误,达到一定累积量则将该主机从连接池中隔离出去,从而实现熔断效果。显然,社区的熔断功能仅支持服务级别熔断,无法细化到路由级,熔断的情况下影响面比较大。

          因此,CSM提供一种新的CRD CTGCircuitBreaker,可以限定仅作用于特定的路由,提供更细粒度的熔断控制。

          本文以Bookinfo和Httpbin为例,模拟熔断效果。其中httpbin的熔断不会对bookinfo产生影响。

          验证准备

          部署网关

          网关安装可以参考 应用服务网格-入口网关。bookinfo的安装可以参考部署bookinfo应用到CSM实例。

          网关deployment部署后,按以下规则配置VirtualService。这条规则表示网关后端分别路由到productpage和httpbin,分别按不同的url路由,两者互相独立,为了后续可以验证路由级的熔断,httpbin不会影响productpage的业务。

          apiVersion: networking.istio.io/v1beta1
          kind: VirtualService
          metadata:
            name: bookinfo
            namespace: default
          spec:
            gateways:
            - bookinfo-gateway
            hosts:
            - bookinfo.com
            http:
            - match:
              - uri:
                  exact: /productpage
              - uri:
                  prefix: /static
              - uri:
                  exact: /login
              - uri:
                  exact: /logout
              - uri:
                  prefix: /api/v1/products
              name: bookinfo-vs
              route:
              - destination:
                  host: productpage.default.svc.cluster.local
                  port:
                    number: 9080
            - match:
              - uri:
                  prefix: /httpbin
              name: httpbin-route-name1
              rewrite:
                uri: /
              route:
              - destination:
                  host: httpbin.foo.svc.cluster.local
                  port:
                    number: 8000
          

          部署httpbin

          apiVersion: v1
          kind: ServiceAccount
          metadata:
            name: httpbin
            namespace: foo
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: httpbin
            namespace: foo
            labels:
              app: httpbin
              service: httpbin
          spec:
            ports:
            - name: http
              port: 8000
              targetPort: 80
            selector:
              app: httpbin
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: httpbin
            namespace: foo
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: httpbin
                version: v1
            template:
              metadata:
                labels:
                  app: httpbin
                  version: v1
              spec:
                serviceAccountName: httpbin
                containers:
                - image: registry-vpc-crs-huadong1.cnsp-internal.ctyun.cn/library/httpbin:latest
                  imagePullPolicy: IfNotPresent
                  name: httpbin
                  ports:
                  - containerPort: 80
          

          开始验证

          创建CTGCircuitBreaker,例如

          apiVersion: istio.ctyun.cn/v1beta1
          kind: CTGCircuitBreaker
          metadata:
            name: router-breaker
            namespace: istio-system
          spec:
            configs:
            - breaker_config:
                break_duration: 10s
                custom_response:
                  body: "hello, break!\r\n"
                  header_to_add:
                    x-envoy-circuitbreak: "true"
                  status_code: 499
                error_percent:
                  value: 60
                max_slow_requests: 10
                min_request_amount: 3
                slow_request_rt: 0.1s
                window_size: 11s
              match:
                vhost:
                  name: bookinfo.com
                  route:
                    header_match:
                    - exact_match: value1
                      name: key1
                    - exact_match: value2
                      name: key2
                    name_match: httpbin-route-name1
            workloadSelector:
              labels:
                istio: ingressgateway
          

          这条熔断规则作用于http-bin-route-name1,对应VirtualService中的路由名。spec具体字段说明如下:

          字段名 类型 字段说明
          configs []*CircuitBreakerConfig 熔断配置,详细字段下文说明。
          workloadSelector *WorkloadSelector 通用的workloadSelector,以labels过滤所作用的workload。

          CircuitBreakerConfig

          字段名 类型 字段说明
          name string 熔断规则名
          match BreakerMatcher 熔断规则的匹配条件,详细字段下文说明
          breaker_config BreakerConfig 熔断条件以及表现等,详细字段下文说明

          BreakerMatcher

          字段 类型 说明
          vhost *VhostMatcher VirtualHost匹配条件

          VhostMatcher

          字段 类型 说明
          name string 匹配的VirtualHost名称
          port int 匹配的端口号,网关一般对外端口与内部转发端口不一致,用户请求中可能不携带端口号,实践中一般路由配置基于uri或者header的规则,此时没必要配置该字段。
          route *RouteMatcher 匹配的路由规则

          RouteMatcher

          字段 类型 说明
          name_match string 对应VirtualService里面的某条规则
          header_match []*HeaderMatcher 匹配服务请求的Header

          HeaderMatcher

          字段 类型 说明
          name string Header名称
          regex_match string 正则匹配
          exact_match string 精确匹配
          prefix_match string 前缀匹配,以什么开头进行匹配
          suffix_match string 后缀匹配,以什么结尾进行匹配
          present_match bool 配置为true,表示存在Header即可,无需关注Header Value的取值。
          配置为false,表示不存在Header。
          invert_match bool 默认为false。
          配置为true,表示上述匹配结果取反。
          配置为false,表示遵循上述匹配结果。

          BreakerConfig

          字段 类型 说明
          window_size string 统计时间窗口,默认10s,最大不能超过12s
          break_duration string 熔断时长,默认30s,最大不超过180s
          slow_request_rt string 定义慢请求的响应延迟时间,超过该响应时长的请求则被认定为慢请求
          max_slow_requests int 最大慢请求次数,必须为整数,例如:1000。超过该次数的新请求会被熔断
          error_percent *Percent 失败率阈值,时间窗口内错误请求(5XX)比例超过该值,则触发熔断
          min_request_amount int 最少请求次数,防止请求量太少时,error_percent统计失真。
          custom_response *CustomResponse 自定义返回内容,当请求被熔断时代替后端返回。
          注意

          表示时间范围的字符串,可以使用以下时间单位的组合:

          nsec 纳秒

          usec/μs 微秒

          ms 毫秒

          s 或 sec 秒

          m 或 min 分钟

          h 或 hour 小时。


          Percent

          字段 类型 说明
          value double 百分比值,只能在[0.0,100.0]中取值。

          CustomResponse

          字段 类型 说明
          status_code int HTTP响应状态码
          header_to_add map[string]string 自定义响应添加的Headers
          body string 自定义响应Body内容

          执行脚本验证效果

          验证失败率脚本

          #!/bin/sh 
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/status/503" 
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/status/200" 
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/status/503" 
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/status/200" | grep 'hello, break!'
          echo "sleep for 10 second to try if recover"
          sleep 10
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/delay/1"  -sv
          

          验证前需要删除header_match条件,该脚本只模拟后端返回错误,不设置请求header。这个脚本发起了两次模拟httpbin返回503,一次200。失败率已达66%,下一次请求会被熔断(可以通过设置error_percent控制失败率,通过min_request_amount控制最少生效次数)。随后sleep 10s在请求验证是否不再熔断。

          hello,break的熔断文本可以自行通过custom_response设置成您想要的返回内容。

          sleep 10s,这个恢复间隔也可以通过break_duration设置。

          验证慢调用脚本

          #!/bin/sh 
          for i in {1..10}; do
            curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/delay/1" 
          done
          
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/delay/1" | grep 'hello, break!'
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/productpage"  -sv
          
          echo "sleep for 10 second to try if recover"
          sleep 10
          
          curl -H "host: bookinfo.com" "http://$GATEWAY_URL/httpbin/delay/1"  -sv
          

          验证前需要删除header_match条件,该脚本只模拟后端返回超时,不设置请求header。这个脚本通过发起10次delay 1s的调用,使得熔断器打开,此处的delay时间和次数,可以通过slow_request_rt max_slow_requests来控制,脚本内容中的1也可以换成0.5之类的非整数delay间隔。

          后续验证是否在请求会返回hello,break,以及sleep 10s后是否恢复正常。

          验证header过滤条件脚本

          #!/bin/sh 
          for i in {1..10}; do
            curl -H "host: bookinfo.com" -H "key1: value1" -H "key2: value2" "http://$GATEWAY_URL/httpbin/delay/1" 
          done
          
          curl -H "host: bookinfo.com"  -H "key1: value1" -H "key2: value2" "http://$GATEWAY_URL/httpbin/delay/1" | grep 'hello, break!'
          
          echo "try productpage to see if blocked"
          curl -H "host: bookinfo.com"  -H "key1: value1" -H "key2: value2" "http://$GATEWAY_URL/productpage"  -sv
          
          echo "sleep for 10 second to try if recover"
          sleep 10
          
          curl -H "host: bookinfo.com"  -H "key1: value1" -H "key2: value2" "http://$GATEWAY_URL/httpbin/delay/1"  -sv
          

          验证前需要设置好header_match条件。调整脚本中的-H参数改写key和value值,同时调整header_match字段,验证httpbin是否熔断,也验证一下productpage是否没有熔断。sleep 10s后验证是否恢复。

          文档反馈

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

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

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

          知道了

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