写点什么

微服务的混沌测试

  • 2016-03-18
  • 本文字数:995 字

    阅读完需:约 3 分钟

在近日举行的 QCon 伦敦大会上, Rachel Reese 声称,世界天生就是混乱的,我们应该有计划并测试我们的系统,确保它能够处理这种混乱。他描述了 Jet 这家于 2015 年 7 月成立的电子商务公司是如何使用微服务和混沌工程的。

Reese 强调,测试微服务在环境中的交互极其重要,即使所有组件都经过了测试,但这并不意味着他们之间的交互是可靠的,也不意味着它们可以一起用于生产环境,所有这些都必须经过测试。她将 Jet 称为一家“为正确的工作选择正确的工具”的公司,对她而言,混沌测试就是其中一个正确的工具。

Reese 将微服务定义为符合单一职责原则(SRP)的应用程序,但是在服务层,由于他们以函数的方式看待微服务,所以它有一个输入,并产生一个输出。她认为,使用微服务的好处包括简化扩展性、独立发布、均匀分布的复杂性。Jet 在10 到15 个团队中运行着大约400 到1000 个微服务,主要是用 F#(一种函数优先的编程语言)编写的。

Reese 指出,混沌工程不是为了有趣而破坏代码,相反,她将其定义为:

在分布式系统上做对照实验,帮助建立对系统承受不可避免的故障的能力的信心。

参照混沌原则,Reese 定义了混沌工程的四个步骤:

  1. 定义“正常”(系统的正常状态);
  2. 假定“正常”会在对照组和实验组中持续;
  3. 引入混沌:服务器崩溃、硬盘异常、网络连接中断等;
  4. 查找对照组和实验组行为上的差别。

更准确地讲,这意味着:

  • 建立假设,定义系统的正常行为和状态,如吞吐量、延迟等;
  • 真实世界的不同事件、流量峰值以及其他可以导致混沌的东西;
  • 在生产环境中运行实验,确保测试的真实性;
  • 自动化实验,让其连续运行。

Reese 发现,混沌工程有许多好处,包括:

  • 白天测试导致系统中断,就不用在凌晨 3 点修复问题;
  • 工程师在设计过程中开始考虑故障;
  • 防止系统后续出现中断,让系统更健康。

根据他们的经验,Reese 指出,他们尚还没有在生产环境进行测试。作为一家初创企业,他们的主要目标是推出正确的东西。现在,他们白天所有时段都会进行随机的 QA 测试。

其中一场对他们而言最“有趣的”的灾难发生在数月之前,他们的手动测试人员发现,他们的搜索引擎宕掉了,导致了下游的一连串问题。这次故障的原因是混沌测试错误地重启了搜索引擎。就靠这么一个故障,他们发现了五六个不同的问题。

Reese 总结到:

如果可靠性很重要,那么你就应该为此开展测试。

Reese 的讲稿已经提供给 QCon 的参会者,稍后将提供给 InfoQ 的读者。

查看英文原文: Chaos Testing of Microservices

2016-03-18 19:004575
用户头像

发布了 1008 篇内容, 共 387.8 次阅读, 收获喜欢 344 次。

关注

评论

发布
暂无评论
发现更多内容

“新内容 新交互” 阿里云全球视频云创新挑战赛正式开启!

阿里云视频云

阿里云 音视频 应用

16张图带你吃透Redis架构演进

Kaito

redis 架构 高性能

区块链+电力,又擦出什么新火花?

CECBC

区块链

您的《操作系统线程模型总结》请查收。

后台技术汇

28天写作 2月春节不断更

今年我读了四个开源项目的源码,来分享下心得

yes

源码 面试 后端

零基础实现Java直播(一):集成

ZEGO即构

短信验证码被刷怎么办?java 短信验证码防刷策略分析

香芋味的猫丶

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

开放下载!解锁 Serverless 从入门到实战大“橙”就

阿里巴巴云原生

云计算 Linux Serverless 开发者 云原生

🌏 超详细 DNS 协议解析

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

如何快速上手 angular.js

华为云开发者联盟

html Vue 数据 angular js

《iOS面试简历技巧解析》

ios 面试

面试加分项!零基础如何成为高级Android开发,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

徒手撸一个Spring Boot中的starter

田维常

springboot

GrowingIO SaaS 产品 CI/CD 实践 (一)

GrowingIO技术专栏

ci SaaS CD

【春节不远行,云上过大年】来华为云社区,接任务领新年红包啦···

华为云开发者联盟

华为云

2021全新iOS学习方向

ios 逆向

民进昆明市委:建议利用区块链技术优势在昆明打造金融应用平台

CECBC

金融 金融区块链

淘宝的商品中心和类目体系是怎么设计的

邴越

架构 阿里 模型 电商 业务

一周信创舆情观察(1.25~1.31)

统小信uos

面试加分项!我在美团Android研发岗工作的那5年,系列篇

欢喜学安卓

android 程序员 面试 移动开发

一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群

刘悦的技术博客

flask k8s kubectl Docker Desktop gunicorn

OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践

阿里巴巴云原生

人工智能 容器 运维 云原生 k8s

LeetCode题解:529. 扫雷游戏,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

PM必备自我管理工具整理

Geek_mktupf

项目管理 PM

2021年 区块链最火的app爱打卡

v16629866266

以终为始:28天打卡输出复盘

熊斌

个人成长 写作平台 28天写作

28天总结

张老蔫

28天写作

互助系统软件开发,互助app开发

luluhulian

原来这就是大厂的MySQL主从复制、读写分离及高可用方案!

MySQL 数据库 架构

基于SpringBoot的微服务架构与K8S容器部署实践

Java 架构 微服务

滴滴夜莺二次开发全搞定

滴滴云

开源 监控 滴滴夜莺 夜莺监控 运维平台

微服务的混沌测试_DevOps & 平台工程_Jan Stenberg_InfoQ精选文章