【发布时间】:2016-06-03 16:56:54
【问题描述】:
在分布式存储中,为了避免数据灾难,我们需要多个数据副本。 但是,为什么总拷贝数默认是3而不是2呢?
两份副本将节省近 50% 的存储需求。
选择3份的主要原因是什么?
【问题讨论】:
标签: storage distributed-system
在分布式存储中,为了避免数据灾难,我们需要多个数据副本。 但是,为什么总拷贝数默认是3而不是2呢?
两份副本将节省近 50% 的存储需求。
选择3份的主要原因是什么?
【问题讨论】:
标签: storage distributed-system
当使用两个数据副本时,它们不同你选择哪个版本?第三个充当平局断路器。
至于为什么它们会有所不同,如果一台计算机停机了一段时间——或者即使它们无法相互通信——它们的数据也会不同,除非系统停止接受写入。但是,对于三台计算机,如果其中一台出现故障或与其他计算机分离,另外两台仍然可以接受数据,而不必担心第一段中的情况。 (除非你有相关的失败,你仍然应该计划。)
更新。通常,您会发现分布式算法使用 基于 Quorum 的系统来确保写入。在大多数情况下,它是简单多数,这意味着至少ceil(n/2) 的节点必须具有该值才能持久写入。之后,您可以保证没有任何东西可以取消写入该值,因为您无法获得ceil(n/2) 更多节点来推翻该决定。在双节点系统中ceil(n/2) = 2;因此,如果其中一个节点出现故障,您将无法再接受写入。但在三节点系统中,ceil(n/2) = 2 仍然存在,所以一个节点可以宕机,系统仍然可以接受写入。
这确实是一个耐用性、成本和延迟的问题。您在系统中投入的节点越多,您就越有可能不会丢失数据。一个节点相当短暂;两个节点的短暂性稍差。三个节点还不错,很多系统都停在那里。但是需要更高持久性的系统将需要 5、7 或 9 个节点。
我在互联网上最可靠的系统之一上工作,我们使用 quorum 中的 5 个节点以及多达 16 个节点作为热备份。对我们来说,与所需的耐用性相比,成本很少;我们选择在仲裁中使用 5 个节点是为了延迟备份,以提高持久性并承受仲裁的一些读取压力。
【讨论】:
因为与显着改善冗余相比,成本增加并不显着。
【讨论】:
在这个问题中添加到迈克尔的answer,选择三个是因为它提供了非常简单的容错级别。这在存在拜占庭故障时称为“不容错”,其中 t 为 1。也就是说,在不关闭系统的情况下,这些数据副本中最多有 1 个可能会过时/损坏/出错。
t 通常被预先选择为相关系统的 SLA,或通过经验证据。给定一个 t 值,需要 2*t+1 个副本来处理容错。
【讨论】: