01
解法
应对磁盘或服务器故障的常用方法是保留多个副本,通常3倍复制意味着存储成本是原来的3倍。对备份提供商来说,这是最主要的成本。
Reed-Solomon纠删码提供了一种更便宜的方案。Backblaze将文件拆成17个相等的分片,计算3个校验分片,并将全部20个分片存储在不同的驱动器上。任意17个中的20个分片即可还原原文件,因此文件可以承受最多丢失3个分片。
这是设计的关键:不是保留3个完整副本,而是保留1个副本和少量校验数据,在获得几乎相同耐用性的同时,只花费一小部分存储成本。
02
取得了什么结果
用校验数学买耐用性,而不是用重复副本
03
为什么有效
校验分片的成本远低于完整副本。
任意17个中的20个分片都能重建文件,容忍多驱动器故障。
更低的存储开销直接降低了提供商的单位成本。
04
可以借鉴什么
当你通过复制数据来购买可靠性时,你是在用高价的整体单位购买;编码数学让你以固定开销精确购买所需的数量。
05
后续
Backblaze开源了其Java Reed-Solomon库,纠删码也成为云提供商和备份服务用少量CPU换取更便宜耐用性的常见方式。
从这里,追溯依据
参考来源
- Backblaze open-sources Reed-Solomon erasure coding source code Backblaze · backblaze.com ·
- Erasure coding OpenStack Wiki · wiki.openstack.org