在发电纸中:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
复制部分说:
要考虑节点故障,首选项列表包含多于N个 节点
我想知道为什么?这个“节点”是指虚拟节点吗?
答案 0 :(得分: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属于牺牲一致性的类。请参考下图:
因此,即使系统具有高可用性,系统仍然不一致。由于网络分区是分布式系统中的给定,因此您无法选择分区容差。
解决您的问题:
- 要考虑节点故障,首选项列表包含多于N个节点。我想知道为什么?
醇>
大规模分布式系统的一个事实是,在数千个节点的系统中,节点的故障是一种常态。
在这么大的系统中,你肯定会有一些节点失败。您不会将其视为特殊情况。你准备好这种情况。你怎么准备?
对于数据:您只需在多个节点上复制数据。
执行:您在多个节点上执行相同的执行。这称为speculative execution。只要从运行的多次执行中获得第一个结果,就会取消其他执行。
那就是答案 - 您复制数据以准备节点可能失败的情况。
- 要考虑节点故障,首选项列表包含多于N个节点。这个“节点”是指虚拟节点吗?
醇>
我想确保我总能进入我家。所以我复制了我家的钥匙,并将它们交给了我的另一个家庭成员。这家伙把钥匙放在我们家的保险箱里。现在,当我们都出去的时候,我的幻想是我们有其他的钥匙,所以如果我失去我的,我们仍然可以进入房子。但是......那些钥匙都在房子里面。丢失我的密钥只是意味着我失去了对我家的访问权。如果我们在虚拟节点而不是物理节点上复制数据会发生这种情况。
虚拟节点不是一个单独的物理节点,因此当映射到该虚拟节点的真实节点发生故障时,虚拟节点也会消失。
如果目标是高可用性,这个'节点'不能指虚拟节点,这是Dynamo DB的目标。