针对分布式系统的特点提出了Target Fault Injection,通过利用分布式组件的执行流知识来控制注入位置。
比如当执行流是在处理用户请求时调用的系统调用或库调用(跨越多个组件)的序列时,可以跟踪流程,并在流程中的任意点注入故障。 这种机制使我们能够在故障注入活动中系统地覆盖故障空间。
Overview
有一些部分没看
- Failure Diagnosis Workflow
- Failure Profile Database Construction
- Fault Localization
ENABLING TECHNIQUES
Processing Flow Discovery
一共有两种情况
- 每来一个请求,产生一个新的线程处理,然后发送一个response
- 实现:
- 在收到消息后,可以通过观察线程的ID来追踪因果关系,直到一个线程发出新的消息。
- 通过监控与网络活动相关的系统调用来实现,比如send和recv。
- 在检测到这些系统调用时,我们记录调用者线程的线程ID和套接字信息(本地IP地址,端口)和(远程IP地址,端口)。
- 线程ID用于绑定从recv到send的事件(即在组件内),而套接字信息用于绑定从send到revc的事件(即跨组件)。
- 实现:
- 异步消息队列
- 查看消息内容以识别消息标识符,并将传入和传出的消息关联起来
最终工程实现:LD_PRELOAD