阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Gremlin 发布面向混沌实验的应用级故障注入(ALF)平台

  • 2018-10-11
  • 本文字数:3101 字

    阅读完需:约 10 分钟

在旧金山举行的 ChaosConf 大会上,Gremlin 公司发布了其在“故障即服务”领域的第二款产品——应用级故障注入(ALFI)。最初的SaaS 产品旨在帮助工程师在基础设施级创建和运行混沌实验,在此基础上,ALFI 通过本地语言库支持实现了应用程序级的故障注入。目前,仅支持Java/JVM 平台,但很快就会加入其他语言库。

根据 Gremlin 的文档介绍,“操作者考虑请求”,除了希望针对基础设施层尝试注入故障外——如重启一个计算实例,增加网络连接延迟或消耗大量的内存——操作者也希望针对目标应用程序请求注入故障,例如,增加延迟或终止请求。

在将 ALFI 库作为依赖项集成到应用程序之后,工程师可以使用基于 Web 的 Gremlin UI 来运行“攻击”,针对 ALFI 依赖项报告的特定应用程序属性来匹配和限定故障注入的影响。工程师可以创建一个范围精确的破坏实验,例如,只影响特定的客户 ID、位置或设备类型。

选择通过 ALFI 进行故障注入的流量类型(图片来自 Gremlin 的博客

Gremlin 团队声称,由于 ALFI 嵌入到了应用程序中,因此,它可以在任何现有的环境中工作,其中也包括所有的无服务器平台,如 AWS Lambda、Azure Functions 和 Google Cloud Functions。Gremlin 认为,在使用微服务或函数即服务(FaaS)架构方式构建的系统中,许多事件的发生都是由于上游依赖项的某个地方出现了减速或故障。因此,ALFI 可以模拟特定服务、特定 RPC 调用和外部依赖的延迟或全面故障,使工程师可以重现中断,主动发现未知的故障模式,并为多个组件发生故障的更复杂的场景做好准备。

要使用 ALFI,工程师必须将 Gremlin 语言依赖项集成到应用程序中并重新部署。 JVM 安装指南针对当前支持的安装过程提供了一个详尽的步骤(目前只提供了一个 Gradle 依赖示例,很快就会提供一个 Maven 示例)。应用程序重新部署后,必须通过环境变量或属性文件配置一系列 ALFI 参数,比如 Gremlin 团队标识符和凭证

工程师操作的主要 Java 类是 com.gremlin.GremlinService,该类抽象了向 Gremlin SaaS 平台 API 注册、查找和缓存实验以及向 Gremlin API 报告成功所需要的所有功能。GremlinService 类被设计为单例,可以通过依赖注入框架进行管理。文档中提供了将故障注入集成到 Java Apache HTTP 客户端 Amazon DynamoDB NoSQL 数据库客户端的示例。还可以添加自定义扩展

ALFI 的一个重要概念是,每个应用程序都有一组标识属性。这组属性被称为 ApplicationCoordinates,用于确定应用程序何时通过基于 Web 的 UI 匹配攻击请求。gremlin-core 依赖包括在 AWS Lambda 和 Amazon EC2 上运行的集成。在 AWS Lambda 中,将默认设置属性“type=AwsLambda、name 和 region”。在 AWS EC2 中,将设置属性“type=AwsEc2、region、az、instanceId”,例如:

{"type"="AwsLambda", "region"="us-west-1", "name"="event-handler"} 和{"type"="MyServiceType", "region"="us-east-1", "service"="recommendations", "criticality"="2", "userfacing"="true"}。 通过在抽象类 GremlinCoordinatesProvider 中实现这两个方法,还可以定义操作者希望针对的应用程序的其他方面或“坐标”。要创建自定义 ApplicationCoordinates,工程师必须重写 initializeapplicationcoordinate() 方法。自动生成的 ApplicationCoordinates(如果有的话)作为这个方法的参数提供,这意味着,任何自定义的坐标都可以附加到里面。下面是一个自定义 ApplicationCoordinates 的示例:

复制代码
import com.gremlin.ApplicationCoordinates;
import com.gremlin.GremlinCoordinatesProvider;
 
public class MyCoordinatesProvider extends GremlinCoordinatesProvider {
 
@Override
public ApplicationCoordinates initializeApplicationCoordinates(Optional<ApplicationCoordinates> autoDiscoveredCoordinates) {
return autoDiscoveredCoordinates.map(c -> {
c.putField("userfacing", "true");
return c;
}).orElseGet(() -> new ApplicationCoordinates.Builder()
.withType("MyServiceType")
.withField("name", "recommendations")
.withField("userfacing", "true")
.build());
}
}
{1}

然后,可以使用这组 ApplicationCoordinates 来匹配攻击。例如,如果操作者创建了匹配 userfacing=true 的攻击,那么上面示例中列举的应用程序将包含在攻击中。目前,操作者可以指定应该受故障注入影响的请求的百分比,为请求添加延迟或在请求执行线程上导致一个被抛出的异常。

在故障注入领域,也有开源的解决方案,例如(现已退役的) Simian Army Chaos Toolkit ,但是,这些产品需要自托管。运行混沌实验确实需要提前准备和设计,最近有一篇长文“ ChaosConf 问答:混沌工程的好处、挑战和实践”对这些主题都有涉及。

要了解关于 Gremlin ALFI 的更多信息,请查看 ALFI 发布博文 ALFI 帮助页面

查看英文原文: Gremlin Release Application Level Fault Injection (ALFI) Platform for Targeted Chaos Experiments

2018-10-11 19:001986
用户头像

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

关注

评论

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

热点面试题:聊聊对 this 的理解?

控心つcrazy

JavaScript 手写代码 this 前端面试题 #热点问题

5大特性,带你认识化繁为简的华为云CodeArts Deploy

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

东数西算下,液冷数据中心为何日趋重要?

蓝海大脑GPU

数据中心 高性能计算 东数西算 液冷散热

AI绘图绘画NFT数藏系统开发(成熟案例)

I8O28578624

3M互助盘dapp系统开发源码部署

开发微hkkf5566

Java微基准测试神器JMH初探

FunTester

Mysql都有那些最需要掌握的原理?

做梦都在改BUG

Java MySQL 数据库

企业如何落地DevOps(上)

老张

DevOps 软件工程

企业级应用建设之道:高代码+低代码开发

力软低代码开发平台

今天 4 点,龙蜥自动化运维平台SysOM 2.0的诊断中心功能介绍 | 第 66-68 期

OpenAnolis小助手

开源 系统运维 龙蜥大讲堂 SysOM 诊断

面试半年,总结了1000道2023年Java架构师岗面试题

小小怪下士

Java 程序员 面试 后端

ModStartBlog v6.8.0 博客置顶功能,界面样式优化

ModStart

详解数仓的网络调度与隔离管控能力

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

我是学生,想要参与 OpenCloudOS,该怎么做?

OpenCloudOS

Linux

esp8266 读取 modbus 类型数据在 Grafana 展示

jupiter

IoT esp8266 #Grafana Arduino ESP32-C

基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

阿里云AIoT

云计算 网络协议 物联网 数据采集 定位技术

工业元宇宙:智能制造的未来形态

Openlab_cosmoplat

开源 工业 制造 区块链、 元宇宙

如何在IoT物联网平台注册私有CA证书,来实现X.509方式设备身份认证?——实践类

阿里云AIoT

小程序 算法 物联网 智能硬件

SQL 层功能改进 - lookupJoin 的优化

KaiwuDB

SQL优化 KaiwuDB lookupJoin

IoT设备模拟器小程序使用手册——实践类

阿里云AIoT

小程序 开发者 监控 物联网 传感器

UEditorPlus v2.9.0 文档仓库开源,修复若干问题

ModStart

把 ChatGPT 加入 Flutter 开发,会有怎样的体验?

声网

flutter RTC 直播技术 RTE ChatGPT

智能手持测温枪接入阿里云IoT物联网平台实践——实践类

阿里云AIoT

小程序 监控 物联网 开发工具 消息中间件

IoT物联网平台:网关与子设备开发实战——实践类

阿里云AIoT

Java 物联网 开发工具

又火了!GitHub标星百万的并发编程手册(彩图版)竟是从阿里流出

做梦都在改BUG

Java 并发编程 高并发

智能AI量化现货合约跟单交易机器人软件开发

开发微hkkf5566

在线文本翻译能力新增14个直译模型,打造以中文为轴心语言的翻译系统

HMS Core

企业研发治理转型利器:华为云发布流水线服务CodeArts Pipeline

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

百度工程师漫谈视频理解

百度Geek说

人工智能 视频理解 企业号 2 月 PK 榜 视频动作分析

Zebec被评选为BNB Chain 2023年40佳DAPP

西柚子

强将带新兵?试试少代码!

世开 Coding

开发框架 快速开发平台 Jmix

Gremlin发布面向混沌实验的应用级故障注入(ALF)平台_DevOps & 平台工程_Daniel Bryant_InfoQ精选文章