知识卡片

恢复要有代戳

普通读书笔记卡 · 1718.b

内容

HDFS 在 pipeline recovery、lease recovery 和 block recovery 中提高 generation stamp,让新恢复过程抢占旧过程,并阻止过期客户端继续写入。发散:分布式恢复需要单调递增的时代标识,否则旧 actor 可能带着过期身份破坏新状态。

参考来源

- 位置:《分布式系统与一致性》第3章《开源的文件系统HDFS》"2.块恢复"一节(源文件:_epub-src/OEBPS/Text/chapter7.xhtml) - 结论依据:原文明确"NN生成一个新代戳……由此可见,新的块恢复过程会具有更新的代戳,具有新代戳的块恢复过程会抢占之前旧的块恢复过程",并说明客户端租约过期后其获取新代戳的请求会失败,"通过这样的机制可阻止脑裂的出现"。 - 原始内容:NN生成一个新代戳,然后将block的状态从UnderConstruction改为UnderRecovery,为将新代戳作为recoveryid。由此可见,新的块恢复过程会具有更新的代戳,具有新代戳的块恢复过程会抢占之前旧的块恢复过程……此时这个文件的租约持有者已经是dfs,客户端获取新代戳的操作会失败……通过这样的机制可阻止脑裂的出现。