谁可以在发电机纸上解释'复制'?

时间:2013-03-19 11:43:50

标签: amazon-dynamodb database-replication

在发电纸中:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf

复制部分说:

  

要考虑节点故障,首选项列表包含多于N个   节点

enter image description here

我想知道为什么?这个“节点”是指虚拟节点吗?

3 个答案:

答案 0 :(得分:2)

  1. 用于提高Dynamo的可用性。如果首选项列表中的前N个节点是好的,则不使用其他节点。但是如果所有N个节点都不可用,则将使用其他节点。对于写操作,这称为提示切换。
  2. 该图对物理节点和虚拟节点都有意义。

答案 1 :(得分:1)

我也不理解你所谈论的部分。

背景:
我对该论文的理解是,由于Dynamo的默认复制因子为3,因此每个节点N负责从N-3到N的循环(同时也是N-1到N的振铃范围的协调者)。

这解释了原因:

  

节点B保存从F到B的密钥   节点C保存从G到C的密钥   节点D保存从A到D的键

由于范围A-B属于所有范围,因此节点B,C和D是具有该范围的关键哈希值的节点。

该文件指出:

  

4.3复制:

部分      

为了解决这个问题,通过跳过环中的位置来构建密钥的首选项列表,以确保该列表仅包含不同的物理节点。

如果首选项列表是通过跳过虚拟节点构建的,那么它如何包含多于N个节点? 恕我直言他们应该说出这样的话:

  

为了解决节点故障,环路范围N-3到N可能包含N个以上的节点,N个物理节点加上x个虚拟节点。

答案 2 :(得分:0)

分布式DBMS Dyanmo DB属于牺牲一致性的类。请参考下图:

enter image description here

因此,即使系统具有高可用性,系统仍然不一致。由于网络分区是分布式系统中的给定,因此您无法选择分区容差。

解决您的问题:

  
      
  1. 要考虑节点故障,首选项列表包含多于N个节点。我想知道为什么?
  2.   

大规模分布式系统的一个事实是,在数千个节点的系统中,节点的故障是一种常态。

在这么大的系统中,你肯定会有一些节点失败。您不会将其视为特殊情况。你准备好这种情况。你怎么准备?

对于数据:您只需在多个节点上复制数据。

执行:您在多个节点上执行相同的执行。这称为speculative execution。只要从运行的多次执行中获得第一个结果,就会取消其他执行。

那就是答案 - 您复制数据以准备节点可能失败的情况。

  
      
  1. 要考虑节点故障,首选项列表包含多于N个节点。这个“节点”是指虚拟节点吗?
  2.   

我想确保我总能进入我家。所以我复制了我家的钥匙,并将它们交给了我的另一个家庭成员。这家伙把钥匙放在我们家的保险箱里。现在,当我们都出去的时候,我的幻想是我们有其他的钥匙,所以如果我失去我的,我们仍然可以进入房子。但是......那些钥匙都在房子里面。丢失我的密钥只是意味着我失去了对我家的访问权。如果我们在虚拟节点而不是物理节点上复制数据会发生这种情况。

虚拟节点不是一个单独的物理节点,因此当映射到该虚拟节点的真实节点发生故障时,虚拟节点也会消失。

如果目标是高可用性,这个'节点'不能指虚拟节点,这是Dynamo DB的目标。