2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

谷歌云推出面向分布式系统的混沌工程框架与实践指南

作者:Claudio Masolo

  • 2025-11-19
    北京
  • 本文字数:1391 字

    阅读完需:约 5 分钟

大小:698.99K时长:03:58
谷歌云推出面向分布式系统的混沌工程框架与实践指南

谷歌云专家服务团队发布了一份关于云端分布式系统混沌工程的详细指南。该指南强调,人为制造故障对构建弹性架构至关重要。它为用户在谷歌云环境中实施可控的故障测试提供了开源方案和实用指南。

 

谷歌云团队纠正了业界的一个重大误解:认为云服务提供商的服务等级协议(SLA)和内置的弹性功能会自动保护业务应用程序。实际上,如果应用程序在设计时没有考虑故障处理或持续提供服务,那么一旦云服务中断,它们就会崩溃。无论云基础设施做了什么承诺,这种情况都会发生。

 

谷歌云提出的这个框架基于五大核心原则。首先,团队必须建立“稳态假设”,在引入干扰前明确系统正常行为的特征。其次,实验应复现系统在生产环境中可能遭遇的真实场景。第三点,也是最特别的一点,混沌实验必须在具有真实流量和依赖关系的运行环境中执行——这正是混沌工程与传统测试方法的根本差异。

 

第四个原则强调自动化,将弹性测试视为一个持续的过程,而不是一次性事件。团队必须对实验的“爆炸半径”进行全面评估。他们应根据应用程序和服务对客户的影响程度,将其划分为不同的层级。

 

实际实施时有六项关键实践:

 

  • 定义稳态指标,如延迟和吞吐量。

  • 制定可测试的假设,例如“删除这个容器 Pod 不会影响用户登录”。

  • 从受控的非生产环境开始,然后扩展到生产环境。

  • 直接向系统注入故障,以及通过环境变化间接注入故障。

  • 使用 CI/CD 管道自动化实验执行。

  • 从结果中得出可操作的见解。

 

为了降低初始难度,谷歌云建议使用Chaos Toolkit。这是一个开源的 Python 框架。它采用模块化设计,并支持谷歌云、Kubernetes 等的扩展库。PSO 团队在 GitHub 上提供了一整套的谷歌云实践指南。每项指南都针对一个特定的故障场景。

 

自诞生以来,混沌工程已经发生了巨大的变化。全球各大科技公司如今都在采用这种方法,并根据自身的基础设施需求创造了各自独特的实践方式。

 

2010 年,Netflix 创建了Chaos Monkey。它通过随机停止 Netflix 云架构中的实例和服务来测试系统的稳定性。该公司后来增加了Simian Army。这个套件包括像 Latency Monkey 这样的工具,用于增加人为延迟,以及 Chaos Kong,用于模拟整个可用分区出现故障的情况。2014 年,Netflix 引入了故障注入测试(FIT),通过向其系统推送故障模拟元数据,实现对故障注入的更精确控制。

 

与 Netflix 开发 Chaos Monkey 同时,谷歌推出了灾难恢复测试,或称为DiRT。谷歌使用它定期和自动检查其系统,确保它为任何灾难做好了准备,能够进行响应和恢复。随着时间的推移,DiRT 变成了一个年度的多日测试活动,旨在检查谷歌整体的灾难准备情况。

 

亚马逊云科技也有自己的混沌工程工具,称为AWS故障注入模拟器(FIS)。这是一个全托管的服务,用于运行故障注入实验。它模拟现实世界的 AWS 故障,并与 Chaos Toolkit 和Chaos Mesh等工具搭配使用。这扩展了可供测试的故障类型。亚马逊云科技还创建了一个场景库。它提供预构建的实验,用于测试应用程序的弹性,并简化混沌工程实践。FIS 场景库的特色实验包括 AZ 可用性:电源中断。这模拟了特定分区停电的情况。

 

现代架构已经从单体系统转变为基于微服务的系统。这种变化增加了服务依赖的复杂性。云环境非常分散,因为应用程序分布在许多可用分区和区域中。这种分布方式会产生许多潜在的故障点,而传统的测试方法往往难以全面覆盖这些问题。

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2025/11/谷歌-chaos-engineering/

2025-11-19 14:003511

评论

发布
暂无评论

如何避免让微服务测试成为研发团队最大的瓶颈?

阿里巴巴中间件

年终总结:华为|字节|腾讯|京东|网易|滴滴面经分享(斩获6个offer)

Java架构之路

Java 程序员 架构 面试 编程语言

CodeDay#5 全程回顾——一场关于动态化开发实践的技术探讨

蚂蚁集团移动开发平台 mPaaS

mPaaS Codeday 技术沙龙

滴滴 Flink-1.10 升级之路

Apache Flink

flink

Docker开启Remote API 访问 2375端口

wjchenge

Docker 2375端口

万字长文详细总结!关于继承、重写与重载、封装、接口的硬核干货

codevald

Java 接口 封装、继承、多态 类对象

十里选一终拿offer,准阿里java程序员分享面试经验!

Java架构之路

Java 程序员 架构 面试 编程语言

【内含福利】流行在CDN圈内的黑话有哪些?

阿里云Edge Plus

CDN

MySQL之父,MySQL官方,三大顶会齐赞,凭什么?

数据君

教你10分钟解决短信验证码接口被盗刷、轰炸、恶意点击等问题。

香芋味的猫丶

短信防刷 短信验证码 短信防轰炸 短信防火墙

架构师 3 期 3 班 -week10- 作业

zbest

作业 week10

GraphX 在图数据库 Nebula Graph 的图计算实践

NebulaGraph

图数据库 图数据库实战

疫情又反扑,除了不乱跑,我们还能干点啥?

数据君

2020-21《全球质量报告》解读

BY林子

质量保障 质量赋能 敏捷测试

让机器人响应更快!阿里云 ARMS 助力深绘智能系统响应时长缩短50%

阿里巴巴中间件

技术方案设计的方法论及案例分享

阿里巴巴云原生

数据库 流计算 云原生 监控 存储

2020已过,2021来临,iOS 开发市场如何?一切都是未知!【未来可期】

ios 程序员

List去除重复数据的五种方式

xcbeyond

Java ArrayList 28天写作

这只猫在云端定居了?边缘计算在天猫精灵云应用上的落地实践

阿里云Edge Plus

CDN IoT 边缘计算 云桌面

Linux-Lab 入门:体验

贾献华

Docker Linux 嵌入式 内核 Lab

点赞系统软件开发

luluhulian

new的过程是怎样的?看完这一篇就懂了

codevald

Java JVM原理 面向对象编程 类对象

Varchar竟然会自动存储成lob类型?

dbaplus社群

Elasticsearch 从 0 到千万级数据查询实践

📿

Java spring elasticsearch Spring Cloud spring data

LeetCode题解:69. x 的平方根,二分查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

云话题 | 第3期 你女朋友在买买买时,程序员小哥在干嘛?

阿里云Edge Plus

CDN 直播 直播带货

爱奇艺率先上线CUVA HDR标准内容,将多端支持该标准2021央视春晚直播、点播

爱奇艺技术产品团队

云讲堂 | 5期视频带你全面了解滴滴Logi-KafkaManager

滴滴云

kafka 运维 监控 滴滴Logi

满满的干货!阿里开源Java程序员2021年金三银四面试指南

Java架构之路

Java 程序员 架构 面试 编程语言

字节面试太刁钻了:不加机器,怎么提升系统并发100倍

Java架构师迁哥

疫情成本遭不住?一招降本85%,架构特性全部公开!

数据君

谷歌云推出面向分布式系统的混沌工程框架与实践指南_云计算_InfoQ精选文章