红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

微服务的混沌测试

  • 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:004416
用户头像

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

关注

评论

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

【Dubbo3.0技术专题】总体技术体系介绍及技术指南(序章)

洛神灬殇

dubbo RPC 8月日更 Dubbo3

NDK 使用入门

Changing Lin

8月日更

Linux之telnet命令

入门小站

Linux

【设计模式】迭代器模式

Andy阿辉

C# 后端 设计模式 8月日更

ISO-8601 如何解读

HoneyMoose

oeasy教您玩转vim - 16 - # 行内贴靠

o

Java实现基于朴素贝叶斯的情感词分析

码农参上

Java 贝叶斯公式 文本情感分析 8月日更

「让我们一起Golang」怎样出让协程资源和设置可用CPU核心数

Regan Yue

高并发 协程 Go 语言 8月日更

架构实战营毕业总结

Vic

架构实战营

装机必备的软件里,绝对不能少了这一款 | 剪贴板增强工具

彭宏豪95

效率 工具 windows 实用工具

数据库知识整理

十二万伏特皮卡丘

阿里大牛最新公开压轴的“Redis深度笔记”,GitHub已标星81.6K

Java~~~

Java redis 架构 面试 架构师

聊聊Java数据类型的那些事

Bob

Java 后端 8月日更

Java 项目还需要 joda 吗

HoneyMoose

摸鱼小技巧之IDEA调试篇一

4ye

Java debug 后端 IDEA 8月日更

对数字化的审视思维

boshi

数字化转型

Vue进阶(三十二):npm install、npm install --save与 npm install --save-dev 区别

No Silver Bullet

Vue 8月日更

毕业总结

俞嘉彬

架构实战营

在线IP地址查询工具

入门小站

工具

如何做好高并发系统设计

架构精进之路

高并发 8月日更

性能测试框架中实时QPS取样器实现

FunTester

性能测试 测试框架 QPS FunTester 取样器

【Flutter 专题】67 图解基本约束 Box (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

手撸二叉树之二叉树的中序遍历

HelloWorld杰少

数据结构与算法 8月日更

Swift 仿自如 App 裸眼 3D 效果

fuyoufang

ios swift 8月日更

不愧是阿里内部“SpringCloudAlibaba学习笔记”这细节讲解,神了

Java 程序员 架构 面试 微服务

架构实战营毕设

Vic

架构实战营

rosedb 事务实践

roseduan

数据库 事务 存储 KV存储引擎

飞书 + Lua 实现企业级组织架构登录认证

K8sCat

lua openresty 网关 飞书 组织架构

B 端产品经理如何快速成长?

蒋川

数据产品经理 b端产品经理

spring 循环依赖与三级缓存

Rubble

springboot 8月日更

Intellij运行Java程序启动等待BUG分享

FunTester

Java IDEA intellij bug

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