写点什么

微服务的混沌测试

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

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

关注

评论

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

数据隔离、访问授权,用好大数据为什么这么难?

华为云开发者联盟

大数据 数据湖 华为云 DLI 数据隔离

白板技术实践:在线教育平台如何保障课件数据安全

ZEGO即构

加密解密 OSS 鉴权

Week11总结

熊威

有了MDL锁视图,业务死锁从此一目了然

华为云开发者联盟

MySQL 数据库 华为云 MDL锁视图 元数据

netdata安装到redhat7.6最简手册

橙子冰

netdata

第 0 期架构师训练营第3周作业1

fujin

组合模式

区块链钱包应用开发,数字货币钱包源码

13530558032

XSKY星辰天合助力中国五矿打造政企办公新标杆

XSKY星辰天合

JAVA,.NET项目开发难上手?Learun敏捷开发框架解君愁

Learun

LeetCode题解:20. 有效的括号,栈,JavaScript,详细注释

Lee Chen

大前端 LeetCode

架构重构之禅

ninetyhe

Java 架构设计 代码重构

奈学:Executor线程池的概述

奈学教育

线程池 Executor

奈学:Executor线程池的概述

古月木易

线程池 Executor

Docker 之常见应用部署

哈喽沃德先生

Docker 容器 微服务

合约跟单交易系统开发,交易所一键跟单模式搭建

13530558032

技术揭秘:华为云DLI背后的核心计算引擎

华为云开发者联盟

大数据 spark 数据湖 华为云 DLI

CUDA,cuDNN,pytorch 在win10环境下的下载安装

Qx

教程 PyTorch

如何在3秒内打开一个网址

BabyKing

区块链承兑支付系统开发,USDT入金支付系统

13530558032

90%的开发都没搞懂的CI和CD!

禅道项目管理

ci DevOps 持续集成 持续交付 持续部署

实用!教学白板跨国低时延互动技术实现指南

ZEGO即构

OSS 全站加速 集群

第 0 期架构师训练营第 3 周作业2---总结

fujin

第 0 期架构师训练营第 4 周作业 1

fujin

永续合约交易系统开发方案,合约交易所源码搭建

13530558032

爱技术爱折腾,想要编程到60岁--我的十年

盛安德软件

浅谈业务系统设计哲学

滴滴普惠出行

一周信创舆情观察(8.10~8.23)

统小信uos

第 0 期架构师训练营第 4周作业 2--- 总结

fujin

温故知新——Spring AOP

牛初九

spring aop ioc

Docker 镜像构建之 docker commit

哈喽沃德先生

Docker 容器 微服务

前端训练营(15)-动画

罗思雨

大前端

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