本文共 1253 字,大约阅读时间需要 4 分钟。
在旧金山举行的大会上,Gremlin公司发布了其在“故障即服务”领域的第二款产品——。最初的SaaS产品旨在帮助工程师在基础设施级创建和运行混沌实验,在此基础上,ALFI通过本地语言库支持实现了应用程序级的故障注入。目前,仅支持Java/JVM平台,但很快就会加入其他语言库。
\\根据Gremlin的文档介绍,“”,除了希望针对尝试注入故障外——如重启一个计算实例,增加网络连接延迟或消耗大量的内存——操作者也希望针对目标应用程序请求注入故障,例如,增加延迟或终止请求。
\\在将ALFI库作为依赖项集成到应用程序之后,工程师可以使用基于Web的Gremlin UI来运行“攻击”,针对ALFI依赖项报告的特定应用程序属性来匹配和限定故障注入的影响。工程师可以创建一个范围精确的破坏实验,例如,只影响特定的客户ID、位置或设备类型。
\\ \\选择通过ALFI进行故障注入的流量类型(图片来自)
\\Gremlin团队声称,由于ALFI嵌入到了应用程序中,因此,它可以在任何现有的环境中工作,其中也包括所有的无服务器平台,如AWS Lambda、Azure Functions和Google Cloud Functions。Gremlin认为,在使用微服务或函数即服务(FaaS)架构方式构建的系统中,许多事件的发生都是由于上游依赖项的某个地方出现了减速或故障。因此,ALFI可以模拟特定服务、特定RPC调用和外部依赖的延迟或全面故障,使工程师可以重现中断,主动发现未知的故障模式,并为多个组件发生故障的更复杂的场景做好准备。
\\要使用ALFI,工程师必须将Gremlin语言依赖项集成到应用程序中并重新部署。针对当前支持的安装过程提供了一个详尽的步骤(目前只提供了一个Gradle依赖示例,很快就会提供一个Maven示例)。应用程序重新部署后,必须通过环境变量或属性文件配置一系列ALFI参数,比如。
\\工程师操作的主要Java类是com.gremlin.GremlinService,该类抽象了向Gremlin SaaS平台API注册、查找和缓存实验以及向Gremlin API报告成功所需要的所有功能。GremlinService类被设计为单例,可以通过依赖注入框架进行管理。文档中提供了将故障注入集成到Java 和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\
转载地址:http://nvutx.baihongyu.com/