使用混沌候攻击测试Spring Boot应用

栏目: Java · 发布时间: 7年前

内容简介:在编写了许多单元和集成测试后,代码覆盖范围从70%到80%,但是还是存在一种焦虑,我们的宝宝在生产中的表现如何?许多问题仍然没有答案:1. 我们的后备工作会起作用吗?

在编写了许多单元和集成测试后,代码覆盖范围从70%到80%,但是还是存在一种焦虑,我们的宝宝在生产中的表现如何?

许多问题仍然没有答案:

1. 我们的后备工作会起作用吗?

2. 应用程序如何处理网络延迟?

3. 如果我们的某项服务出现故障怎么办?

4. 服务发现是否有效,但我们的客户端负载平衡是否也有效?

如果你开始在你的公司实施混沌工程,那么你必须是一个非常社交和沟通的人。为什么,因为当你的混乱实验发生时,你会在很短的时间内亲自认识你的许多同事。

您的服务是否具有弹性并可以处理故障?如果没有,请不要开始混乱实验!

不要在生产环境启用混沌候!

Spring Boot Chaos Monkey是一个小型库(30kb),可以使用以下选项将Chaos Monkey集成到Spring Boot App中:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>chaos-monkey-spring-boot</artifactId>
    <version>X.X.X</version>
</dependency>

对于Spring Boot 2.0.x:

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>chaos-monkey-spring-boot</artifactId>
  <version>2.0.0-SNAPSHOT</version>
</dependency>

使用Spring Profile chaos-monkey启动应用程序以初始化Chaos Monkey,从版本1.5.0和2.0.0 开始,它默认不会对应用启动攻击,需要在运行时动态激活它。

java -jar your-app.jar --spring.profiles.active=chaos-monkey

也可以通过Spring Boot PropertiesLauncher注入外部JAR文件方式激活:

java -cp your-app.jar
  -Dloader.path=chaos-monkey-spring-boot-X.X.X.jar
    org.springframework.boot.loader.PropertiesLauncher
    --spring.profiles.active=chaos-monkey

或者通过 loader.path系统设置与 Spring Boot PropertiesLauncher启动:

java \
  -Xbootclasspath/a:aspectjrt-1.9.1.jar \
  -cp your-app.jar \
  -Dloader.path=chaos-monkey-spring-boot-X.X.X.jar \
  -Dspring.profiles.active=chaos-monkey \
  org.springframework.boot.loader.PropertiesLauncher

通过环境变量 LOADER_PATH和Spring Boot PropertiesLauncher激活:

LOADER_PATH=chaos-monkey-spring-boot-X.X.X.jar \
java \
  -Xbootclasspath/a:aspectjrt-1.9.1.jar \
  -Dspring.profiles.active=chaos-monkey \
  -cp your-app.jar \
  org.springframework.boot.loader.PropertiesLauncher

在所有情况下:

无论你如何嵌入Chaos Monkey,只要不将属性“ chaos.monkey.enabled ”设置为“ true ”,就什么都不会发生!

无需更改源代码就能激活!

运行时的动态配置

从版本1.5.0和2.0.0开始,可以通过Spring Boot Actuator Endpoint在运行时配置Chaos Monkey for Spring Boot。

工作原理

如果Spring Boot Chaos Monkey在类路径中并使用配置文件名称“chaos-monkey”激活,它将自动扫描应用程序以查找以下使用Spring注释的所有类:

@Controller
@RestController
@Service
@Repository
@Component

通过配置可以定义激活哪些攻击和监视器,默认情况下仅激活@Service观察器和延迟攻击。

Watcher是一个Chaos Monkey for Spring Boot组件,它将扫描应用程序以获取特定类型的注释,在Spring AOP的帮助下,Chaos Monkey会识别出一个公共方法的执行,提供以下攻击:

1. 延迟攻击

2. Exception 攻击

3. AppKiller攻击


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python高性能编程

Python高性能编程

【美】 戈雷利克 (Micha Gorelick)、【美】 欧日沃尔德(Ian Ozsvald) / 人民邮电出版社 / 2017-7-1 / 79

本书共有12章,围绕如何进行代码优化和加快实际应用的运行速度进行详细讲解。本书主要包含以下主题:计算机内部结构的背景知识、列表和元组、字典和集合、迭代器和生成器、矩阵和矢量计算、并发、集群和工作队列等。最后,通过一系列真实案例展现了在应用场景中需要注意的问题。 本书适合初级和中级Python程序员、有一定Python语言基础想要得到进阶和提高的读者阅读。一起来看看 《Python高性能编程》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器