> For the complete documentation index, see [llms.txt](https://documentation.alluxio.io/ee-da-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.alluxio.io/ee-da-cn/architecture/io-resiliency.md).

# I/O弹性

该文档描述了Alluxio如何处理意外或者可预期的宕机，例如当Alluxio workers变得不可用时。\
有多种机制来平滑地处理应用程序请求，并确保Alluxio系统的总体I/O弹性。

## UFS回退机制

Alluxio客户端从Alluxio工作节点读取元数据和数据。如果请求的工作节点变得不可用或返回错误，客户端可以回退到从UFS请求这些信息。

UFS回退机制在默认情况下是开启的。\
这种设置在一些情况下可能有负面情况出现，例如潜在大量请求过载UFS，这种效应被称作是羊群效应问题。（参见<https://en.wikipedia.org/wiki/Thundering\\_herd\\_problem）>

如果想要禁用该机制，可以使用以下方式设置

```
alluxio.dora.client.ufs.fallback.enabled=false
```

## 成员变更

### 添加工作节点

当向集群中添加工作节点时，新添加的工作节点将根据一致性哈希算法，从既有工作节点处接管一些哈希范围。\
客户端仍将从现有的工作节点中读取文件，直至客户端检测到成员已发生变更。\
如果请求被指向新的工作节点，由于工作节点需要重新从UFS加载数据，读取操作可能会变慢，但操作不应显示任何错误。

### 移除工作节点

当工作节点被移除时，之前指向被移除工作节点的路径将根据一致性哈希算法重新分配给其他工作节点。\
由被移除工作节点服务的，正在进行的请求，将会失败。\
如果启用了UFS回退机制，客户端将尝试直接向UFS重试请求。\
一旦客户端检测到成员变更，这些请求将被适时指向剩余尚在工作的工作节点。\
如果基于S3接口，应用程序可能会看到正在进行的读取发生瞬时读取错误，但应该能够在工作节点成员更新后恢复。

### 重启工作节点

重启工作节点，与移除工作节点后再次添加是相同的。因为每个工作节点都有一个特定身份从而形成一致性哈希环。\
重启的工作节点将负责它之前管理的相同路径，这样此工作节点上缓存的数据仍然有效。
