混沌工程 Chaos Engineering的简介

简介: 混沌工程 Chaos Engineering的简介

  工程师团队最不愿碰到的便是大半夜被电话叫醒,开始紧张地查验问题,处理故障以及恢复服务。也许就是因为睡前的一个很小的变更,因某种未预料到的场景,引起蝴蝶效应,导致大面积的系统混乱、故障和服务中断,对客户的业务造成影响。特别是近几年,尽管有充分的监控告警和故障处理流程,这样的新闻在  IT  行业仍时有耳闻。问题的症结便在于,对投入生产的复杂系统有多少信心。监控告警和故障处理都是事后的响应与被动的应对,那有没有可能提前发现这些复杂系统的弱点呢?

  混沌工程 Chaos Engineering

  在分布式系统上进行由经验指导的受控实验,观察系统行为并发现系统弱点,以建立对系统在规模增大时因意外条件引发混乱的能力和信心。

  混沌工程发展简介

  2008年8月, Netflix 主要数据库的故障导致了三天的停机, DVD 租赁业务中断,多个国家的大量用户受此影响。之后 Netflix  工程师着手寻找替代架构,并在2011年起,逐步将系统迁移到 AWS  上,运行基于微服务的新型分布式架构。这种架构消除了单点故障,但也引入了新的复杂性类型,需要更加可靠和容错的系统。为此, Netflix 工程师创建了 Chaos  Monkey ,会随机终止在生产环境中运行的 EC2  实例。工程师可以快速了解他们正在构建的服务是否健壮,有足够的弹性,可以容忍计划外的故障。至此,混沌工程开始兴起。

图1 – 混沌工程演进时间线

  图1中展示了混沌工程从2010年演进发展的时间线:

  2010年 Netflix 内部开发了 AWS 云上随机终止 EC2 实例的混沌实验工具: Chaos Monkey

  2011年 Netflix 释出了其猴子军团工具集: Simian Army

  2012年 Netflix 向社区开源由 Java 构建 Simian Army,其中包括 Chaos Monkey V1 版本

  2014年 Netflix 开始正式公开招聘 Chaos Engineer

  2014年 Netflix 提出了故障注入测试(FIT),利用微服务架构的特性,控制混沌实验的爆炸半径

  2015年 Netflix 释出 Chaos Kong ,模拟AWS区域(Region)中断的场景

  2015年 Netflix 和社区正式提出混沌工程的指导思想 – Principles of Chaos Engineering

  2016年 Kolton Andrus(前 Netflix 和 Amazon Chaos Engineer )创立了 Gremlin  ,正式将混沌实验工具商用化

  2017年 Netflix 开源 Chaos Monkey 由 Golang 重构的 V2 版本,必须集成 CD 工具 Spinnaker  来使用

  2017年 Netflix 释出 ChAP (混沌实验自动平台),可视为应用故障注入测试(FIT)的加强版

  2017年 由Netflix 前混沌工程师撰写的新书“混沌工程”在网上出版

  2017年 Russell Miles 创立了 ChaosIQ 公司,并开源了 chaostoolkit 混沌实验框架

  今天,许多公司包括 FANG,都有自己的 Chaos Engineer  ,使用某种形式的混沌工程实验,来提高现代架构的可靠性。由于混沌工程的目的是给复杂的分布式系统引入扰动,并观察系统行为,借此发现系统弱点。因此,混沌工程实验中涉及的可行性调研、实验场景和环境的设计与计划、工具的选型和配合方式、系统行为的观测方法、以及找到问题后如何改善系统架构和运维模式,都需要科学的分析和有经验的混沌工程专家指导。

目录
相关文章
|
JSON Java 数据格式
微服务框架(十三)Spring Boot Logstash日志采集
  本文为Spring Boot中Log4j2对接Logstash,进行日志采集。Logstah只支持log4j,使用log4j2时需要通过TCP插件调用 此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。
|
4月前
|
人工智能 Kubernetes 安全
【重磅】 Blade AI 自主韧性测试智能体正式开源
本次阿里云峰会上发布韧性测试智能体 Blade AI:用自然语言一句话自动完成系统韧性测试全流程。
882 34
|
运维 Kubernetes 监控
K8S异常诊断之俺的内存呢
本文讲述作者如何解决客户集群中出现的OOM(Out of Memory)和Pod驱逐问题。文章不仅详细记录了问题的发生背景、现象特征,还深入探讨了排查过程中的关键步骤和技术细节。
1142 108
K8S异常诊断之俺的内存呢
|
6月前
|
机器学习/深度学习 人工智能 运维
高压电线电力巡检六类图像识别数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含2000张高压输电线路巡检图像,涵盖电缆破损、绝缘子破损、正常电缆/绝缘子、杆塔、植被遮挡共6类,YOLO格式标注,已划分train/val/test,开箱即用,专为YOLO系列目标检测任务优化,助力智能电力巡检研发与落地。(239字)
932 6
|
7月前
|
人工智能 安全 机器人
OpenClaw从新手入门到中级进阶攻略:阿里云/本地部署、配置、Skill进阶+多场景实战指南
2026年,OpenClaw(曾用名ClawdBot、Moltbot)凭借开源特性与强大的智能体能力,成为全球最火爆的AI Agent项目,GitHub星标已突破24.2万,被国内用户亲切称为“小龙虾”。它并非普通的聊天机器人,而是一款可扩展的AI智能体平台,核心价值在于能将大模型的“思考能力”转化为“执行能力”——通过接入海量Skill插件、对接多通信渠道,实现文件管理、自动化办公、开发辅助、学术研究等全场景任务,真正成为用户的“数字员工”。
1416 8
|
存储 编解码 算法
视频为什么可以被压缩?帧内压缩与帧间压缩有何区别?视频编码中的CBR、VBR、CRF...是什么?
视频压缩基于冗余,包括空间冗余、时间冗余、视觉冗余和编码冗余。帧内压缩利用空间相关性,帧间压缩利用时间相关性。视频编码中的码率控制方法有CBR(固定码率)、VBR(动态码率)、CRF(固定码率系数)、CQP(固定质量参数)、CVBR(约束可变码率)和ABR(平均码率),各有优缺点,适用于不同的场景。
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
1215 14
|
Java 关系型数据库 MySQL
【Java课程设计】基于Java Swing 的图书管理系统
本次课程设计基于教材《Java基础案例教程(第二版)》中的第十三章,对课程源码的整理和分享。整个课程设计,我整理了mysql数据库的两个版本:5.7和8.0,方便各位码友们的学习!
|
网络协议 安全 Linux
Linux的netns使用总结
Linux的netns(Network Namespace)是一项强大的网络隔离功能,可在内核层面创建多个独立的网络空间,每个空间配备独立的网络协议栈,包括接口、路由表及iptables规则等,确保不同应用或服务在网络环境中互不干扰,提升系统安全性和灵活性。通过`ip netns`命令可轻松管理netns,实现创建、删除及执行命令等功能。netns适用于容器技术、虚拟化环境及网络测试等多种场景,为用户提供高效、安全的网络环境管理方案。
1743 3