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

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

内容简介:在编写了许多单元和集成测试后,代码覆盖范围从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攻击


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

查看所有标签

猜你喜欢:

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

规划算法

规划算法

拉瓦利 / 2011-1 / 99.00元

《规划算法》内容简介:规划是人类智慧的结晶,规划问题广泛地存在于人们的日常工作和生活中。现在,规划已涉及计算机科学、人工智能、力学、机械学、控制论、对策论、概率论、图论、拓扑学、微分几何、代数几何等许多现代科学领域。《规划算法》是作者多年来教学和科研工作的总结,系统地介绍了规划领域中的基础知识和最新成果。作者将三个相对独立的学科:机器人学、人工智能和控制论巧妙地结合在一起。《规划算法》给出了大量内......一起来看看 《规划算法》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

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

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换