论文

SequenceFI:微服务系统的非侵入式临时故障注入

SequenceFI: Non-intrusive Temporal Fault Injection for Microservice Systems

摘要

故障注入广泛用于评估微服务系统的弹性,其中客户端请求通常跨越多个服务和执行阶段。现有的请求级技术通常控制注入错误的位置和内容,但不能控制它们在分布式执行中激活的时间。此限制使得难以重现与时间相关的故障,例如状态更改副作用后的故障、顺序敏感的并发响应以及重复的下游调用中的部分故障。本文提出了 SequenceFI,一种用于微服务系统中时态故障注入的非侵入式框架。 SequenceFI 观察消息级发送和接收事件,沿着请求执行传播紧凑的时间证据,并仅在满足事件敏感时间防护时触发故障。它进一步从跟踪中合成时间防护,减少了对时间故障注入配置进行详尽枚举的需要,同时不需要修改应用程序代码或序列化库。我们在 Kubernetes 上实现了 SequenceFI,并在四个广泛使用的微服务基准测试上对其进行了评估。在 9 种时间错误场景和 450 次有效试验中,SequenceFI 在没有过早或多次注入的情况下实现了 100.0% 的时间成功,平均在一次尝试中找到有效的配置,并且与 H-Random 相比,将端到端搜索总时间减少了 95.91%。