system-design-notes:纠删码(Erasure Coding)vs 多副本复制,存储可靠性方案终极对比

发布时间:2026/9/17 12:08:51
system-design-notes:纠删码(Erasure Coding)vs 多副本复制,存储可靠性方案终极对比 system-design-notes纠删码Erasure Codingvs 多副本复制存储可靠性方案终极对比【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insiders Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notessystem-design-notes 是一套系统设计与面试笔记仓库其 S3 对象存储一章深入对比了两种主流存储可靠性方案纠删码Erasure Coding与多副本复制3 副本。本文提炼核心结论纠删码可将存储成本降低约 50%多副本读写更快如何根据成本与性能权衡选型是存储可靠性设计的核心。背景对象存储为什么执着于可靠性 ️对象存储如 Amazon S3牺牲部分性能换取超高持久性、海量扩展和低成本主要服务于归档、备份等冷数据场景。以 S3 为例其标准-低频存储类承诺的持久性高达99.999999999%11 个 9且要求即使整个可用区被摧毁数据也不丢失。要理解纠删码 vs 多副本先了解三类存储的定位差异![对象存储、文件存储与块存储对比](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/24. S3-like Object Storage/images/storage-comparison.png?utm_sourcegitcode_repo_files)对象存储是三者中对可靠性要求最高、对性能最宽容的一类——这正是纠删码大放异彩的领域。多副本复制最简单直接的可靠性方案多副本复制Replication的原理非常直观把同一份数据完整复制到多个节点。以 3 副本为例一份数据分布在 3 台机器上任意 2 台挂掉数据依然安全。但有一个关键细节副本必须分布在不同故障域Failure Domain——不同的机架、不同的可用区AZ。因为一次断电或网络故障可能同时干掉同一机架内的多台机器。仓库中的设计示例就是三副本分别落在三个独立供电、独立网络的可用区![多副本跨可用区复制与故障域隔离设计](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/24. S3-like Object Storage/images/failure-domain-isolation.png?utm_sourcegitcode_repo_files)据仓库估算假设单块硬盘年故障率为 0.81%做 3 副本即可达到 6 个 9 的数据持久性。纠删码原理数据切片 校验块 纠删码的思路完全不同不把数据完整复制而是切成若干数据块再额外计算若干校验块Parity。以 42 方案为例一份数据拆成 d1~d4 四个数据块再算出 p1、p2 两个校验块共 6 块分布存储。它的核心能力是——任意丢失 2 块都能用剩下的 4 块数学还原。![纠删码四步流程切分数据、计算校验、节点故障、数据重建](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/24. S3-like Object Storage/images/erasure-coding.png?utm_sourcegitcode_repo_files)整个流程分四步① 把对象拆成等大小的数据块 d1~d4② 计算校验块 p1、p2③ 假设有 2 个节点宕机d3、d4 丢失④ 利用剩余的 d1、d2 和 p1、p2 重建出 d3、d4。把每个数据块想象成一台数据节点挂掉 2 台剩下 4 台照样能把数据完整算回来。同样 1GB 文件存储成本差多少仓库用了一个非常直观的对比存储一份 1GB 的对象——![1GB文件的多副本复制3节点与纠删码426节点存储开销对比](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/24. S3-like Object Storage/images/erasure-coding-vs-replication.png?utm_sourcegitcode_repo_files)对比维度多副本复制3 副本纠删码42实际占用3GB每份 1GB1.5GB每块 0.25GB存储开销200%50%分布节点数3 个6 个可容忍节点故障2 个2 个读取性能快任取一个完整副本即可慢需从多处聚合数据块可靠性约 6 个 9可达 11 个 9实现难度简单复杂校验计算 数据重建可以看到同等容忍故障数下纠删码的存储开销只有多副本的一半代价是读写路径变慢数据路由服务必须从多个位置收集分片、计算开销增加。生产级玩法84 方案跨故障域分布仓库给出的生产级方案是84 纠删码8 个数据块 4 个校验块共 12 块分布在 12 个故障域上任意 4 个故障域失效都能恢复可靠性最大化![84纠删码数据块与校验块跨12个故障域分布方案](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/24. S3-like Object Storage/images/erasure-coding-across-failure-domains.png?utm_sourcegitcode_repo_files)别忽视另一半数据校验Checksum⚠️磁盘整体坏掉好检测但部分内存位静默损坏就麻烦了。仓库的解法是为每个文件、每个对象都存储校验和Checksum![本地文件系统的数据校验和存储结构只读文件与读写文件各存Checksum](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/24. S3-like Object Storage/images/checksums-for-correctness.png?utm_sourcegitcode_repo_files)注意如果是 84 纠删码重建时需要逐个取回 8 个数据块并分别校验每一块的 checksum才能确保还原结果正确。这也是纠删码更费计算的一个具体体现。选型速查表你的场景该用哪个✅你的场景推荐方案理由低延迟、高频访问的热数据多副本复制单副本完整可读延迟最低海量冷数据、归档、备份纠删码存储成本直降 50%可靠性反而更高混合负载如对象存储分层混合热数据多副本冷数据转纠删码按存储分层自动迁移一句话总结仓库的结论复制对延迟敏感型应用更友好纠删码在存储成本效率和数据持久性上占优但实现难度大得多。真实系统往往不是二选一而是按数据温度混合使用。延伸阅读 本章完整设计上传/下载流程、分片上传、垃圾回收、元数据分片24. S3-like Object Storage/README.md纠删码 vs 多副本核心对比段落README.md 持久性设计章节校验和与数据正确性验证README.md 校验和章节本章全部配图目录24. S3-like Object Storage/images/【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insiders Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询