返回架构笔记
Arch Day 100

Arch Day 100: 混沌工程 — 通过受控实验建立系统信心

Arch Day 100: 混沌工程 — 通过受控实验建立系统信心

2026-07-08
第四阶段 - 高阶融合
混沌工程韧性设计GameDaySLO故障注入弹性模式

日期: 2026-07-08 (Day 100) 阶段: 第四阶段 - 高阶融合 标签: #混沌工程 #韧性设计 #GameDay #SLO #故障注入 #弹性模式


核心概念

混沌工程不是"搞破坏"——是通过受控实验建立系统信心

很多人第一次听到"混沌工程"时的反应是:"你们故意把生产系统搞坏?疯了吧?"这是最常见的误解。

混沌工程的本质是科学实验方法应用于分布式系统:通过有计划、受控的实验,主动发现系统的薄弱环节,在真正的故障发生之前修复它们。

混沌工程的核心哲学

"故障不是'是否会发生'的问题,而是'何时发生'的问题。
 混沌工程的目标不是避免故障,而是确保系统能优雅地处理故障。"
                                        —— Netflix Chaos Engineering Team

混沌工程 vs 传统测试

维度传统测试混沌工程
目标验证已知行为发现未知弱点
范围单元/集成/端到端系统级韧性
环境通常在测试环境可以在生产环境
思维"验证系统正确""探索系统会怎么坏"
频率每次提交定期或持续

知识点详解

一、混沌工程原则

混沌工程的五大核心原则(源自Netflix及社区的持续演进):

原则1:建立稳态假设(Build a Hypothesis around Steady State)

步骤:
1. 定义"正常"是什么(稳态行为)
   例: "支付成功率 > 99.95%,P99延迟 < 500ms"

2. 提出假设
   例: "当数据库主节点宕机时,系统会在30秒内自动故障转移,
        支付成功率下降不超过0.1%"

3. 设计实验验证假设
4. 观察实际行为是否符合假设

原则2:多样化真实世界事件(Vary Real-world Events)

不要只测试"服务器宕机"。真实世界的故障更加多样:
├── 网络分区(两个数据中心之间断连)
├── 网络延迟突增(跨区域通信变慢)
├── DNS解析失败
├── 时钟偏移(NTP故障导致节点时间不同步)
├── 磁盘I/O变慢(而非完全失败)
├── CPU饱和(不是100%,而是持续80%+导致的性能劣化)
├── 内存泄漏(缓慢失败,非突然崩溃)
├── 证书过期(TLS证书到期导致连接失败)
├── 第三方API超时(支付网关/短信服务突然变慢)
└── 配置错误(最常见的生产故障原因之一)

原则3:在生产环境运行实验(Run Experiments in Production)

为什么测试环境的混沌实验价值有限?
├── 测试环境的流量模式不同
├── 测试环境的数据量不同
├── 测试环境的并发不同
├── 测试环境的依赖配置不同
└── 真正的"惊喜"只在生产环境出现

但生产环境实验必须:
├── 有明确的爆炸半径(Blast Radius)控制
├── 有即时终止实验的能力
├── 在非高峰期执行
├── 有完整的监控覆盖
└── 有回滚/恢复预案

原则4:自动化持续运行(Automate Experiments to Run Continuously)

手动执行混沌实验无法规模化。Netflix的ChAP(Chaos Automation Platform)实现了混沌实验的完全自动化——实验在后台持续运行,只有发现问题时才通知人类。

原则5:最小化爆炸半径(Minimize Blast Radius)

爆炸半径控制策略:
├── 从最小范围开始(1个Pod → 1个节点 → 1个AZ)
├── 设置自动终止条件(错误率 > 阈值则立即停止实验)
├── 在非高峰期执行
├── 逐步扩大范围(确认安全后再加大实验强度)
└── 准备好即时恢复手段

二、混沌工程工具对比(2025-2026最新)

根据2025年最新的工具评估,主流混沌工程工具包括:

工具对比矩阵

工具类型平台特点适用场景
Chaos Mesh开源KubernetesCNCF孵化项目,PingCAP创建K8s原生环境
LitmusChaos开源KubernetesCNCF托管,ChaosHub实验库K8s + CI/CD集成
Gremlin商业多平台最成熟的商业方案企业级、多云
AWS FIS托管AWSAWS原生AWS深度用户
Steadybit商业多平台低代码实验设计企业快速上手

Chaos Mesh深度

Chaos Mesh是由PingCAP创建的云原生混沌工程平台,目前是CNCF孵化项目。它支持三大类故障注入:

Chaos Mesh故障类型:
├── 基础资源故障
│   ├── PodChaos: Kill/Failure Pod
│   ├── NetworkChaos: 延迟/丢包/分区/带宽限制
│   ├── DNSChaos: DNS解析错误
│   ├── IOChaos: 磁盘I/O延迟/错误
│   ├── TimeChaos: 时钟偏移
│   └── StressChaos: CPU/内存压力
│
├── 平台故障
│   ├── AWSChaos: EC2/EBS故障
│   ├── GCPChaos: GCE实例故障
│   └── AzureChaos: Azure VM故障
│
└── 应用层故障
    ├── JVMChaos: JVM异常注入
    ├── HTTPChaos: HTTP请求/响应篡改
    └── KernelChaos: 内核级故障

Chaos Mesh实验定义示例

apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
  name: payment-network-delay
spec:
  action: delay
  mode: all
  selector:
    namespaces:
      - payment
    labelSelectors:
      app: payment-service
  delay:
    latency: "500ms"
    jitter: "100ms"
    correlation: "50"
  duration: "5m"
  scheduler:
    cron: "@every 2h"  # 每2小时自动执行

LitmusChaos最新进展(2025 Q4)

LitmusChaos在2025年Q4取得了重要突破:

  1. MCP Server发布:Litmus推出了MCP(Model Context Protocol)Server,使混沌实验能够通过AI客户端直接发现、运行和监控——这是混沌工程与AI结合的前沿实践
  2. 生产级采用:全球多家企业已在生产环境使用LitmusChaos,包括Adidas、FIS、iFood、Intuit、Lenskart、Red Hat和VMware
  3. ChaosHub生态:预定义实验库持续丰富,与CI/CD流水线的集成更加成熟

三、故障注入类型深度

故障注入分类及影响分析

故障类型注入方式系统影响期望行为
网络延迟增加50-500ms延迟上游服务超时熔断器触发、降级
网络丢包丢弃10-50%数据包重试增加、吞吐下降重试机制生效
网络分区隔离两组服务部分功能不可用优雅降级、CAP权衡
Pod Kill随机杀死Pod短暂不可用K8s自动重建、流量重路由
CPU压力持续80%+ CPU处理变慢自动扩容触发
内存压力逐步增加内存使用OOM Kill风险内存告警→重启/扩容
磁盘故障I/O错误/延迟数据读写失败故障转移到副本
时钟偏移时间前进/后退证书验证失败、日志乱序NTP纠正、容错设计
DNS故障解析超时/错误无法发现服务DNS缓存、备用解析

时钟偏移——被忽视的"杀手"

时钟偏移是最容易被忽视但影响极大的故障类型:

时钟偏移会导致:
├── TLS证书验证失败(时间不在有效期内)
├── 分布式锁失效(基于时间的锁过早/过晚释放)
├── 日志时间线混乱(无法做故障根因分析)
├── 事件排序错误(Event Sourcing系统致命)
├── JWT令牌验证异常(exp/iat时间戳比较出错)
├── 缓存过期计算错误
└── 分布式一致性协议异常(Raft/Paxos依赖时间戳)

四、Game Day设计

Game Day(演练日)是混沌工程的"高级形式"——模拟大规模故障场景,测试整个组织(不仅是系统)的应对能力。

Game Day流程

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  1. 计划     │────▶│  2. 准备     │────▶│  3. 执行     │
│  (Plan)     │     │  (Prepare)  │     │  (Execute)  │
└─────────────┘     └─────────────┘     └─────────────┘
                                              │
┌─────────────┐     ┌─────────────┐          │
│  5. 改进     │◀────│  4. 复盘     │◀─────────┘
│  (Improve)  │     │  (Review)   │
└─────────────┘     └─────────────┘

详细Game Day计划模板

## Game Day #001: 支付系统数据库主节点故障

### 1. 计划阶段
- **目标**: 验证数据库主从切换的RTO < 30秒,RPO = 0
- **范围**: 支付服务 + 数据库集群
- **假设**: 主节点宕机后,从节点30秒内自动提升为主节点,
           期间支付请求通过重试机制最终成功
- **时间**: 2026-07-08 02:00-04:00 (凌晨低峰期)
- **参与者**: SRE团队(执行) + 支付团队(观察) + DBA(待命)

### 2. 准备阶段
- [ ] 确认监控面板就绪(DB延迟/支付成功率/错误率)
- [ ] 确认告警通道正常
- [ ] 准备回滚预案(手动恢复主节点)
- [ ] 通知相关团队和值班人员
- [ ] 确认当前系统状态健康(稳态基线)
- [ ] 设置实验自动终止条件:
      - 支付成功率 < 99.0% 持续 > 2分钟
      - 数据一致性检查失败

### 3. 执行阶段
- 02:00 记录稳态基线(支付成功率、延迟、TPS)
- 02:05 注入故障:Kill数据库主节点
- 02:05-02:10 观察:
  - 从节点是否自动提升?
  - 支付服务是否自动切换连接?
  - 重试机制是否生效?
  - 错误率变化?
- 02:10-02:20 持续观察恢复过程
- 02:20 确认完全恢复(如未恢复则执行回滚预案)

### 4. 复盘阶段
- 实际RTO: ___秒 (目标: < 30秒)
- 实际RPO: ___条交易 (目标: 0)
- 发现的问题:
  1. ...
  2. ...
- 各团队表现评估

### 5. 改进阶段
- Action Item 1: ... (Owner: xxx, Due: xxx)
- Action Item 2: ... (Owner: xxx, Due: xxx)

五、SLO预算与混沌工程的关系

Error Budget(错误预算)是连接SLO和混沌工程的桥梁:

SLO: 99.95% 可用性(每月)
Error Budget: 0.05% = 每月约 21.6 分钟的允许故障时间

Error Budget 状态判断:
├── 预算充足(已用 < 50%)→ 鼓励进行混沌实验
│   "我们还有余量,趁现在主动发现问题"
│
├── 预算适中(已用 50-80%)→ 谨慎实验
│   "可以做低风险实验,但要控制爆炸半径"
│
├── 预算紧张(已用 > 80%)→ 暂停实验
│   "先保稳定性,不要再制造潜在故障"
│
└── 预算耗尽 → 冻结变更
    "停止所有非关键变更,集中精力提升可靠性"

关键洞察:混沌工程不应该消耗Error Budget——如果一次混沌实验导致了真实的用户影响,说明实验的爆炸半径控制有问题。好的混沌实验应该在不影响SLO的情况下发现潜在问题。

六、金融系统混沌工程的边界和风险

什么可以注入?

可以注入(安全区):
├── 非关键服务的Pod Kill(推荐系统、通知服务)
├── 网络延迟增加(50-200ms级别)
├── 读副本的故障(不影响写入)
├── 缓存失效(测试缓存穿透处理)
├── 非核心第三方服务超时
└── Staging/预生产环境的任何故障

什么不能注入?(或需要极度谨慎)

禁区(绝不允许):
├── 直接注入数据库写入错误(可能导致数据损坏)
├── 金融交易的结果篡改
├── 生产环境的清算/结算系统故障
├── 跨行支付通道的故障(影响面无法控制)
└── 监管报送系统的故障

高风险区(需CTO级别审批):
├── 数据库主节点故障(需在极低峰期)
├── 核心支付链路的网络分区
├── 消息队列集群故障
└── 身份认证系统故障

金融混沌工程的安全原则

1. 渐进式: 先Staging → 再影子流量 → 最后生产(低峰期、小范围)
2. 可逆性: 任何实验必须能在30秒内终止
3. 可观测: 实验前确认所有监控指标可见
4. 审批制: 生产环境实验需要SRE Lead + 业务Owner双重审批
5. 通知制: 所有相关团队必须提前知晓
6. 记录制: 完整的实验日志和结果归档

七、弹性设计模式

混沌工程发现的问题,最终需要通过弹性设计模式来解决:

1. 舱壁模式(Bulkhead)

                    ┌─────────────────────┐
                    │    API Gateway      │
                    └─────────┬───────────┘
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
        ┌──────────┐   ┌──────────┐   ┌──────────┐
        │ 线程池A   │   │ 线程池B   │   │ 线程池C   │
        │ (支付)    │   │ (查询)    │   │ (通知)    │
        │ max: 50  │   │ max: 100 │   │ max: 20  │
        └──────────┘   └──────────┘   └──────────┘

目的: 即使"通知"服务池耗尽,也不会影响"支付"服务池
类比: 船的水密舱——一个舱进水不会沉没整艘船

2. 熔断器模式(Circuit Breaker)

状态机:
          失败率 > 阈值                超时后尝试
Closed ──────────────▶ Open ──────────────▶ Half-Open
  ▲                                          │
  │        成功率恢复           失败          │
  └───────────────────── Half-Open ──────────┘
                           │
                     失败率仍高
                           │
                           ▼
                         Open

配置示例:
- 失败率阈值: 50%(最近100次请求中50次失败)
- Open持续时间: 30秒
- Half-Open允许请求数: 10
- 监控窗口: 最近100次请求

3. 重试模式(Retry)

重试策略对比:
├── 固定间隔: 每次重试间隔相同(1s, 1s, 1s)
│   适用: 简单场景
│
├── 指数退避: 间隔指数增长(1s, 2s, 4s, 8s)
│   适用: 大多数场景
│
├── 指数退避+抖动: 退避+随机偏移
│   适用: 高并发场景(避免"重试风暴")
│
└── 自适应: 根据系统负载动态调整
    适用: 高级场景

关键参数:
- 最大重试次数: 3(支付场景不宜过多)
- 超时时间: 每次请求独立超时
- 幂等性: 重试前提——确保操作幂等
- 可重试条件: 5xx可重试,4xx不重试

4. 超时模式(Timeout)

超时层次:
├── 连接超时(Connection Timeout): 建立连接的最大时间(通常1-5秒)
├── 读超时(Read Timeout): 等待响应的最大时间(通常5-30秒)
├── 请求超时(Request Timeout): 整个请求的最大时间
└── 全局超时(Global Timeout): 包含重试在内的总超时

超时计算:
单次请求超时 = 连接超时 + 读超时 = 2s + 10s = 12s
含重试总超时 = 单次超时 × (1 + 重试次数) + 退避时间
            = 12s × 3 + (1s + 2s) = 39s

⚠️ 超时级联: 上游超时必须 > 下游超时之和
   Gateway(60s) > ServiceA(30s) > ServiceB(10s)

5. 降级模式(Fallback)

降级策略:
├── 返回缓存数据("不太新但能用")
├── 返回默认值("宁可给个通用答案也不报错")
├── 功能简化("去掉推荐,只显示基本信息")
├── 异步补偿("先返回成功,后台异步处理")
└── 人工兜底("系统降级,转人工处理")

金融系统降级示例:
├── 实时风控超时 → 降级为离线风控规则
├── 余额查询失败 → 显示"余额获取中"而非报错
├── 推荐系统降级 → 显示热门产品列表
└── 短信通知失败 → 降级为站内消息

对比分析

混沌工程工具选择决策

你的环境是什么?
├── Kubernetes → 团队规模大吗?
│   ├── 大团队 → Gremlin(商业,支持好)或 Chaos Mesh(开源,功能全)
│   └── 小团队 → LitmusChaos(开源,CI/CD集成好,有ChaosHub)
│
├── AWS原生 → AWS Fault Injection Simulator (FIS)
│
├── 多云/混合 → Gremlin(跨平台支持最好)
│
└── 刚起步 → 从LitmusChaos开始(学习曲线低,社区好)

Netflix混沌工程演进时间线

2010: Chaos Monkey(随机杀死EC2实例)
2012: Simian Army(Chaos Gorilla/Latency Monkey等)
2014-2019: Active/Passive多区域架构
2016: ChAP(Chaos Automation Platform)— 自动化混沌实验
2020-2024: Full Active-Active + Chaos Kong自动化
2025: AI辅助流量预测 + 主动故障转移
2026+: 边缘感知计算路由 + WASM媒体边缘处理

专家预测:2026-2028年将实现完全自主的混沌工程

架构设计实操:设计"支付系统"混沌工程方案

场景

某支付平台处理日均1000万笔交易,需要设计混沌工程方案以验证系统韧性。系统架构包括:API Gateway → 支付服务 → 风控服务 → 账务服务 → 数据库集群 + 消息队列 + Redis缓存。

实验矩阵

实验ID故障类型目标组件注入方式环境风险等级期望结果
CE-001Pod Kill支付服务(1/5)Kill 1个PodStagingK8s自动重建,流量重路由
CE-002网络延迟支付→风控+200ms延迟Staging熔断器触发,降级为离线规则
CE-003Redis宕机缓存集群Kill主节点Staging自动故障转移,缓存穿透保护
CE-004DB读延迟读副本+500ms I/O延迟生产(低峰)查询降级,核心写入不受影响
CE-005MQ积压Kafka分区暂停消费者Staging消息不丢失,恢复后自动消费
CE-006网络分区支付↔账务完全隔离Staging本地事务成功,异步补偿
CE-007DB主故障数据库主节点Kill主节点生产(凌晨)30秒内自动切换,RPO=0
CE-008AZ故障整个可用区模拟AZ不可用生产(凌晨)极高流量自动切到其他AZ

Game Day流程设计

## Game Day #2026-Q3-01: 支付系统韧性验证

### 目标
验证支付系统在以下三种故障场景下的行为:
1. 数据库主节点故障 (RTO < 30秒)
2. 风控服务完全不可用 (自动降级)
3. 缓存集群故障 (缓存穿透保护)

### 时间安排
- 日期: 2026-07-08 (周三)
- 时间: 02:00-05:00 (凌晨低峰期)
- TPS基线: ~50 TPS (低峰期)

### 参与角色
- 主导: SRE团队 (执行实验+监控)
- 观察: 支付产品团队 + 架构师
- 待命: DBA团队 + 运维团队
- 审批: CTO + SRE Lead

### 实验序列

Phase 1 (02:00-02:30): Redis集群故障
  02:00 确认基线稳态
  02:05 Kill Redis主节点
  02:05-02:20 观察:
    - Sentinel是否自动选举新主节点?
    - 缓存穿透是否被限流保护?
    - 支付成功率是否 > 99.9%?
  02:20 恢复+清理
  02:30 确认完全恢复

Phase 2 (02:30-03:15): 风控服务不可用
  02:30 确认基线稳态
  02:35 注入风控服务网络分区(完全不可达)
  02:35-03:00 观察:
    - 熔断器是否在预期时间触发?
    - 是否自动降级为离线风控规则?
    - 降级后的误拒率是否在可接受范围?
    - 业务指标是否正常?
  03:00 恢复网络
  03:00-03:15 观察:
    - 熔断器是否自动从Open→Half-Open→Closed?
    - 恢复过程是否平滑?

Phase 3 (03:15-04:15): 数据库主节点故障
  03:15 确认基线稳态
  03:20 Kill数据库主节点
  03:20-03:50 观察:
    - 从节点提升时间(目标 < 30秒)
    - 期间的交易成功率
    - 是否有数据丢失(RPO检查)
    - 应用连接池是否自动重连
  03:50 确认新主节点稳定
  04:00 恢复原主节点为从节点
  04:15 确认完全恢复

### 终止条件(Emergency Stop)
以下任一条件触发则立即终止实验:
- 支付成功率 < 99.0% 持续 > 3分钟
- 出现数据不一致告警
- 出现资金异常
- 监控系统本身故障(无法观测)

### 复盘模板
| 实验 | 期望RTO | 实际RTO | 期望RPO | 实际RPO | 通过? | 发现问题 |
|------|---------|---------|---------|---------|-------|---------|
| Redis | < 10s | ___s | 0 | ___ | Y/N | |
| 风控降级 | < 5s | ___s | N/A | N/A | Y/N | |
| DB切换 | < 30s | ___s | 0 | ___ | Y/N | |

安全边界设计

safety-boundaries:
  automatic-stop-conditions:
    - metric: "payment_success_rate"
      threshold: "< 99.0%"
      duration: "3m"
      action: "terminate_all_experiments"

    - metric: "data_consistency_check"
      threshold: "any_failure"
      action: "terminate_immediately"

    - metric: "error_rate_5xx"
      threshold: "> 5%"
      duration: "2m"
      action: "terminate_all_experiments"

  blast-radius-limits:
    max-affected-pods: "20%"
    max-affected-traffic: "10%"
    excluded-components:
      - "settlement-service"    # 清算不参与
      - "regulatory-reporting"  # 监管报送不参与
      - "audit-log-service"     # 审计日志不参与

  approval-requirements:
    staging: "SRE Lead"
    production-low-risk: "SRE Lead + Service Owner"
    production-high-risk: "CTO + SRE Lead + Service Owner"

AI增强

AI驱动的混沌工程(2025-2026前沿)

  1. 智能实验生成

    • AI分析系统架构图和依赖关系,自动生成实验矩阵
    • 根据历史故障数据,推荐最有价值的实验场景
    • LitmusChaos的MCP Server使AI客户端能直接发现和运行实验
  2. AI异常检测

    • 在混沌实验期间,AI实时分析指标变化
    • 识别传统阈值告警无法发现的异常模式
    • 自动关联故障注入与系统行为变化
  3. 自主混沌工程

    • Netflix的ChAP已实现实验的完全自动化
    • 专家预测2026-2028年将实现完全自主的混沌工程
    • AI Agent自主设计实验→执行→分析→生成修复建议
  4. AI辅助复盘

    • 自动生成Game Day复盘报告
    • 识别根因和改进建议
    • 追踪Action Item的完成情况

Web3关联

区块链系统的"混沌工程"

区块链本身就是一种"混沌容忍"的设计——BFT(拜占庭容错)共识机制假设节点可能故意作恶:

  1. 节点宕机测试:验证区块链网络在N/3节点离线时仍能出块
  2. 网络分区测试:验证分区后的分叉恢复机制
  3. 恶意节点测试:验证共识协议对拜占庭节点的容忍度
  4. DeFi协议压力测试:极端市场条件下的清算机制是否正常

启示

区块链的设计哲学对传统系统混沌工程有启发:不要假设"组件都是可信的",而要假设"任何组件都可能失败或作恶"。


今日思考

今天是第100天。回顾过去100天的学习,混沌工程可能是最反直觉但最有价值的实践之一。

直觉告诉我们:"不要碰生产环境,不要制造故障。"但混沌工程告诉我们:"在受控条件下主动发现问题,远好过在凌晨3点被动应对故障。"

金融系统的混沌工程更需要智慧——不是不做,而是在正确的边界内、正确的时间、正确的方式去做。Error Budget提供了决策框架,Game Day提供了实践方法,弹性设计模式提供了修复手段。

2025-2026年的新趋势:AI正在让混沌工程从"人驱动的演练"走向"机器驱动的持续验证"。LitmusChaos的MCP Server就是这个趋势的具体体现。


面试题

Q1: 混沌工程如何在生产环境安全执行?

30秒回答:三个关键保障——爆炸半径控制(从最小范围开始、自动终止条件)、Error Budget驱动(预算充足时才实验)、完整可观测性(实验期间全程监控)。

2分钟详细回答

生产环境混沌工程安全执行的五个要素:

  1. 爆炸半径控制:从1个Pod开始,逐步扩大。设置自动终止条件(错误率>阈值立即停止)。明确"禁区"组件
  2. Error Budget驱动:只在Error Budget充足(使用<50%)时进行实验。预算紧张时暂停
  3. 渐进式策略:Staging验证 → 影子流量验证 → 生产低峰期小范围 → 逐步扩大
  4. 完整可观测性:实验前确认所有监控正常,实验期间实时观察,实验后全面复盘
  5. 组织保障:明确的审批流程、通知机制、回滚预案、值班待命

追问准备

  • 如果混沌实验导致了真实的生产事故怎么办?→ 说明爆炸半径控制不足,需改进安全边界设计
  • 如何说服管理层接受在生产环境做混沌实验?→ 展示行业案例(Netflix/AWS),强调"主动发现vs被动应对"的ROI对比

Q2: 金融系统的混沌工程边界在哪里?

30秒回答:金融系统混沌工程有三个层次——安全区(非核心服务、Staging环境)、审批区(核心服务低峰期、有CTO审批)、禁区(清算结算系统、监管报送系统、任何可能导致数据损坏或资金异常的操作)。

2分钟详细回答

金融混沌工程的核心原则是"数据安全>一切"。可以接受短暂的服务降级(P99延迟上升),但绝不能接受数据不一致或资金异常。

具体边界划分:

  • 安全区:推荐系统/通知服务的Pod Kill、缓存集群故障测试、读副本延迟注入
  • 审批区(需CTO级审批):核心数据库主节点切换测试、支付链路网络分区测试、消息队列故障测试
  • 禁区(任何情况下不允许):清算/结算系统故障注入、监管报送系统中断、任何可能导致"钱算不对"的操作

学习资源


明日预告

明天我们将深入学习多租户架构——SaaS的基石。多租户架构设计错了就是噩梦。我们将对比Silo/Pool/Bridge三种隔离模型、解决Noisy Neighbor问题、以及金融SaaS对数据隔离的特殊合规要求。