问题描述
我正在研究分布式文件系统架构和设计。我遇到的相当多的 DFS 通常具有以下架构:
我的问题是:
复制因子和前向纠错(如 Reed Solomon 擦除编码)在这里兼容吗?使用这两种技术来确保数据的高可用性是否有意义?或者使用一种或另一种就足够了(有什么权衡?)
解决方法
是否可以混合和匹配普通的旧复制和擦除代码取决于所讨论的分布式文件系统在其功能集中提供的内容,但它们通常是相互排斥的。
复制很简单,因为文件/对象作为一个整体被复制到“n”(复制因子)数据节点。写入到所有节点。可以从任何一个节点单独提供读取,因为它们托管整个文件。因此,您可以在多个节点之间分配不同的读取。不涉及中级数学,主要受 I/O 限制。此外,对于给定的文件大小,磁盘使用量更多(因为有 'n' 个副本)。
擦除代码很复杂,因为文件/对象的部分在写入过程中被编码并在“n”个数据节点之间传播。读取需要从多个节点获取数据,对其进行解码并重建数据。因此涉及数学并且可能成为 CPU 限制。与复制相比,磁盘使用量更少,但容错能力也更强。