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

目录
相关文章
|
Kubernetes 容灾 测试技术
ChaosBlade详细介绍
ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,包含混沌工程实验工具 chaosblade 和混沌工程平台 chaosblade-box,旨在通过混沌工程帮助企业解决云原生过程中高可用问题。【2月更文挑战第11天】
1954 12
|
SQL Prometheus 监控
数据库连接池选型 Druid vs HikariCP
springboot 现在官方默认的数据库连接池是 HikariCP,HikariCP的性能从测试的数据上来看也是最高的。
数据库连接池选型 Druid vs HikariCP
|
缓存 资源调度
解决安装依赖时报错:npm ERR! code ERESOLVE
解决安装依赖时报错:npm ERR! code ERESOLVE
5326 0
解决安装依赖时报错:npm ERR! code ERESOLVE
|
7月前
|
存储 安全 Java
Git历史数据清理:运用BFG删除敏感信息。
通过使用BFG Repo-Cleaner,你可以确保你的Git历史记录自由于敏感数据,而不需要为手动清理每一个提交而烦恼。不仅如此,BFG的效率极高,对于大型的存储库和长期的提交历史,其表现出色,即使在处理数万个提交和GB级别的数据时,也能快速和有效的清理Git历史。
266 20
|
11月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
传感器 存储 算法
物联网设备的低功耗设计与优化技术
【7月更文挑战第7天】低功耗设计与优化技术是物联网设备广泛应用的关键。通过选择合适的处理器和微控制器、低功耗通信协议、睡眠与唤醒机制以及数据压缩与传输优化策略,可以显著降低物联网设备的功耗,延长其电池寿命,提高系统的可靠性和性能。未来,随着物联网技术的不断发展,低功耗设计与优化技术将持续演进,并在更多领域发挥重要作用。
|
Prometheus Kubernetes Cloud Native
使用prometheus来避免Kubernetes CPU Limits造成的事故
使用prometheus来避免Kubernetes CPU Limits造成的事故
270 7
|
NoSQL 网络协议 Redis
Redis从入门到精通之Redis事件机制详解
Redis采用事件驱动机制来处理大量的网络IO,这是Redis实现高性能的关键之一。Redis并没有采用成熟的开源方案如libevent或libev,而是自己实现了一个非常简洁的事件驱动库ae_event。
977 104
Redis从入门到精通之Redis事件机制详解
|
消息中间件 存储 中间件
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
491 0
|
设计模式 监控 Java
『APP稳定性测试干货』| 基于Monkey的移动端/APP稳定性测试过程和方法
『APP稳定性测试干货』| 基于Monkey的移动端/APP稳定性测试过程和方法
676 1