混沌工程是什么?你知道吗?

开发 项目管理
验证系统是否能应对预期外的故障情况。这种方法帮助公司确认系统的容错能力、恢复能力和弹性。例如,可能会模拟数据库故障、网络延迟、服务器宕机等,以验证系统能否及时恢复,不会对用户造成重大影响。

为什么大型科技互联网公司会故意在生产环境中破坏其服务?有几点原因:

  1. 验证系统的韧性

验证系统是否能应对预期外的故障情况。这种方法帮助公司确认系统的容错能力、恢复能力和弹性。例如,可能会模拟数据库故障、网络延迟、服务器宕机等,以验证系统能否及时恢复,不会对用户造成重大影响。

  1. 早发现早治疗

帮助团队提前发现并解决潜在的问题,而不是等到问题在真实环境中发生时才去应对。及早发现并修复瓶颈和薄弱环节,避免出现系统崩溃等灾难性后果。

  1. 提升团队的响应能力

团队在控制的环境中反复进行故障恢复演练,可以有效提升对真实故障的响应速度和处理能力,减少实际发生时的恐慌和混乱。

这种方法被称为 “混沌工程”,大约在12年前由 Netflix 公司首次使用。

图片图片

如何在系统中尝试混沌工程?

显然,在这样做时必须小心谨慎。毕竟,我们不是为了好玩或吓唬客户而破坏我们的生产服务。我们做混沌工程是为了找到系统中的痛点;这是我们为客户提供的一项服务。要想成功完成这项工作,做好以下准备是很有帮助的:

  1. 制定计划。用统计学术语来说,我们需要对所选服务的行为提出假设,我们要通过混沌工程将其击垮。
  2. 计算爆炸半径(Blast Area)。当一项服务宕机时,故障可能会连锁到其他服务。因此,我们需要了解影响的范围,即 “爆炸半径”。
  3. 良好的监控。您需要仔细检查爆炸半径内的服务是否有良好的监控,这样我们才能知道实验进行得如何,爆炸半径是否扩大。
  4. 制定运行手册。在运行手册中,我们将记录下关闭服务的步骤、恢复服务的步骤,以及最重要的停止实验的应急计划。

一切就绪。可以开始了。

思考一下:一些团队(如 QA 和 SRE)可能会反对混沌工程,有时原因是可以理解的。如何让他们相信这是一项有价值的工作?

责任编辑:武晓燕 来源: ByteByteGo
相关推荐

2024-04-30 09:02:48

2024-08-20 08:29:55

2024-10-10 16:53:53

守护线程编程

2021-04-11 11:20:26

数字人民币数字货币区块链

2025-02-27 08:09:52

2023-12-20 08:23:53

NIO组件非阻塞

2024-09-02 00:30:41

Go语言场景

2015-08-24 09:23:25

2024-04-22 08:02:34

kafka消息队列高可用

2022-11-28 00:04:17

2024-01-15 12:16:37

2025-03-05 00:00:00

RTKRedux开发

2024-04-07 00:00:03

2024-07-30 08:22:47

API前端网关

2024-11-08 09:48:38

异步编程I/O密集

2024-02-19 07:44:52

虚拟机Java平台

2020-11-17 08:30:06

LinuxSwapping 设计

2024-03-19 08:01:54

服务熔断软件设计模式微服务

2024-10-09 08:19:35

2023-11-02 10:22:29

gRPC后端通信
点赞
收藏

51CTO技术栈公众号