菜单
开源

xk6-disruptor 工作原理

xk6-disruptor 由两个主要组件组成

  • xk6-disruptor 扩展提供了 Javascript API,用于使用 xk6-disruptor-agent 作为后端将故障注入目标系统。此 API 围绕一组扰动器(disruptors)构建。每个扰动器针对系统中的一类组件(例如 Pod 或集群节点)。
  • xk6-disruptor-agent 将故障注入其运行的目标系统中。它以 Docker 镜像的形式提供,您可以从 xk6-disruptor 仓库拉取。

xk6-disruptor 扩展在目标系统中安装代理,并发送命令以注入所需的故障。具体如何实现取决于扰动器的类型,如下所述。

PodDisruptor

下图展示了 PodDisruptor 的工作原理

  1. PodDisruptor 根据构造函数中定义的选择器属性选择目标 Pod
  2. PodDisruptor 将 xk6-disruptor-agent 附加到每个目标 Pod 上
  3. 注入故障时(例如调用injectHTTPFaults),PodDisruptor 向代理发送命令,使其在其各自的 Pod 中注入故障

How PodDisruptor works

ServiceDisruptor

ServiceDisruptor 作为 PodDisruptor 的包装器工作,它针对支持该服务的 Pod。

  1. ServiceDisruptor 使用在构造函数中定义的服务定义,创建一个 Pod 选择器,该选择器匹配支持该服务的 Pod。
  2. ServiceDisruptor 使用此 Pod 选择器创建一个 PodDisruptor。
  3. PodDisruptor 在目标 Pod 中安装代理。

从这一点开始,PodDisruptor 的工作原理如前所述。

How ServiceDisruptor works