纠删码 (Erasure Coding)
简而言之: 纠删码 是一种数据存储方式:将数据分段、扩展,并用冗余信息进行编码,然后存储在多个位置。这样,即使部分数据块丢失,也只需其中一部分数据块就能重建原始数据。
纠删码是一种数据存储方式:将数据分段、扩展,并用冗余信息进行编码,然后存储在多个位置。这样,即使部分数据块丢失,也只需其中一部分数据块就能重建原始数据。
为什么重要
在多个地方保存数据的完整副本虽然简单,但成本高昂,因为每多一份副本,就要再占用一份完整的存储空间。纠删码能以少得多的空间达到同样的容错能力,这正是它被用于数据中心、云存储以及去中心化存储网络的原因,后者会将文件分片分散存放在各个独立运营者那里。一些区块链扩容设计也依靠它来实现数据可用性采样:区块数据经过冗余扩展,使轻节点只需下载少量随机分片,就能检验这些数据确实已经发布。代价是编码和重建数据需要额外的计算,而且在修复丢失的分片时会产生额外的网络流量。
示例
使用 Reed-Solomon 码,一个文件被拆分为四个数据块,并由此计算出两个额外的校验块。这六个分块分别存储在六台不同的服务器上,其中任意四个就足以重建文件。这样,该文件在任意两台服务器失效时仍能保全,而占用的空间仅为原始大小的一倍半;相比之下,若要通过保存三份完整副本来承受两次故障,则需要占用三倍的空间。