简介
Chaosblade-box 是一个具有丰富场景的混沌工程平台,当前包含的场景有:
-
chaosblade-exec-os:基础资源实验场景的实现。
-
chaosblade-exec-docker:Docker 容器实验场景的实现,通过调用 Docker API 进行标准化。
-
chaosblade-operator:Kubernetes 平台实验场景的实现,混沌实验通过 Kubernetes 标准的 CRD 方法进行定义,使用 Kubernetes 资源操作方法(如 kubectl、client-go 等)非常方便地创建、更新和删除实验场景,同时也可以使用上述的 chaosblade cli 工具。
-
chaosblade-exec-jvm:Java 应用实验场景的实现,使用 Java Agent 技术动态挂载,无需任何访问,零成本使用,还支持卸载并完全回收 Agent 创建的各种资源。
-
chaosblade-exec-cplus:C++ 应用实验场景的实现,使用 GDB 技术进行方法和代码行级的实验场景注入。
-
limus-chaos-generic:一个用于进行云原生混沌工程的工具集。
简介
该项目是基于 jvm-sandbox 的 Chaosblade 执行器,用于通过增强类的方式对 Java 应用进行混沌实验。
实验可以通过 blade CLI 执行,详情请参见 chaosblade 项目。
Q1-阿里的 chaosBlade 你知道吗
是的,我知道。ChaosBlade 是阿里巴巴(Alibaba)开发的一种开源混沌工程工具。
混沌工程是一种测试和验证系统的方法,通过在生产环境中故意引入故障和异常,以测试系统的弹性和稳定性。ChaosBlade 的目标是帮助开发人员模拟各种故障场景,以便更好地了解系统在面对异常情况时的表现。
ChaosBlade 可以模拟各种类型的故障,如网络延迟、网络分区、CPU 负载增加、内存溢出等。通过引入这些故障,开发团队可以更好地理解他们的系统如何处理异常情况,并在真实的生产环境中进行调试和优化。
大家好,我是老马。
最近在整理资料时,发现以前的 chaos 理解的太浅了,现在重新梳理一下。
混沌工程(Chaos Engineering)是一种系统化的实践,旨在通过故意引入一些故障或不稳定因素,模拟并测试系统在不确定和不完美条件下的表现,进而提高系统的韧性和稳定性。
它的核心思想是通过主动制造一些“混乱”来发现系统潜在的薄弱环节,提前识别和解决可能导致灾难性后果的问题。
作用是什么?
混沌工程通过故意引入不确定性和模拟故障,帮助团队发现系统的潜在问题,提高系统的韧性、稳定性和自动恢复能力。
随着技术环境和生产架构的日益复杂化,混沌工程成为了确保系统可靠性的重要手段。
大家好,我是老马。
这一节我们来介绍一下混沌工程的准则,这里是对原文的一个简单翻译,方便大家学习查阅。
混沌工程原理
最后更新:2019年3月(变更)
混沌工程是通过在系统中进行实验,建立对系统在生产环境中承受复杂条件能力的信心的学科。
大规模分布式软件系统的进展正在改变软件工程的游戏规则。
作为一个行业,我们很快就采纳了能够提高开发灵活性和部署速度的实践。但随之而来的紧迫问题是:我们对投入生产的复杂系统可以有多大的信心?
即使分布式系统中的每个单独服务都能正常运行,这些服务之间的交互也可能导致不可预测的结果。不可预测的结果,加上罕见但具有破坏性的现实世界事件(如生产环境中的硬件故障或网络中断),使得这些分布式系统天生具有混沌性。
大家好,我是老马。
这一节我们来介绍一下常用的 chaos 工具。
作用是什么?
Chaos Monkey 会随机终止运行在生产环境中的虚拟机实例和容器。让工程师频繁接触到故障,会激励他们构建更具弹性的服务。
Chaos Monkey 是遵循 混沌工程原理 的工具之一。
要求
此版本的 Chaos Monkey 已完全集成到 Spinnaker 中,这是 Netflix 使用的持续交付平台。
灵感来自 Netflix 的 Chaos Engineering
本项目提供了一个适用于 Spring Boot 应用程序的 Chaos Monkey,它会尝试攻击您正在运行的 Spring Boot 应用。
从入门到高级使用的所有内容,请参阅 Chaos Monkey for Spring Boot 文档。
成功的应用
混沌工程(Chaos Engineering)在多个公司和组织中得到了成功的应用,尤其是在大型分布式系统和微服务架构中。
通过故意引入故障,混沌工程帮助企业测试其系统在现实世界中的表现,从而提高系统的韧性和可靠性。以下是一些成功应用混沌工程的案例:
1. Netflix
- 背景:Netflix 是混沌工程的先驱,混沌猴(Chaos Monkey)就是由 Netflix 开发的。Netflix 的系统是一个庞大的分布式架构,包含成千上万的微服务。
- 应用:Netflix 使用混沌工程来测试其服务的弹性和容错能力。混沌猴会随机停止 Netflix 数据中心中的服务实例,检查系统是否能够自动恢复,并保持用户的无缝体验。Netflix 还通过混沌实验来验证其自动化恢复机制、服务发现机制以及负载均衡器的稳定性。
- 成果:通过这些实验,Netflix 能够发现潜在的单点故障,优化服务的自动恢复能力,提高系统的弹性,确保在大规模故障时能够迅速恢复。
Byte Buddy 是一个代码生成和操作库,用于在Java应用程序运行时创建和修改Java类,而无需编译器的帮助。
除了Java类库附带的代码生成实用程序外,Byte Buddy还允许创建任意类,并且不限于实现用于创建运行时代理的接口。
此外,Byte Buddy提供了一种方便的API,可以使用Java代理或在构建过程中手动更改类。