3

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

复制部分说:

为了解决节点故障,首选项列表包含 N 个以上的节点。

在此处输入图像描述

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

4

3 回答 3

2
  1. 这是为了增加 Dynamo 的可用性。如果偏好列表中的前 N ​​个节点都不错,则不会使用其他节点。但如果所有 N 个节点都不可用,则将使用其他节点。对于写操作,这称为提示切换。
  2. 该图对物理节点和虚拟节点都有意义。
于 2013-07-26T05:57:37.977 回答
1

我也不明白你说的部分。

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

这就解释了为什么:

节点 B 持有从 F 到 B 的
密钥 节点 C 持有从 G 到 C
的密钥 节点 D 持有从 A 到 D 的密钥

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

该论文指出:

第 4.3 节复制:

为了解决这个问题,一个键的偏好列表是通过跳过环中的位置来构建的,以确保该列表只包含不同的物理节点。

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

考虑到节点故障,环范围 N-3 到 N 可能包含 N 个以上的节点,N 个物理节点加上 x 个虚拟节点。

于 2013-06-26T21:02:47.347 回答
0

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

在此处输入图像描述

因此,即使系统具有高可用性,它也是不一致的。因为网络分区在分布式系统中是给定的,所以您不能不选择 Partition Tolerance。

解决您的问题:


  1. 为了解决节点故障,首选项列表包含 N 个以上的节点。我想知道为什么?

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

在这么大的系统中,您肯定会有一些节点出现故障。您不会将其视为特殊情况。你为这种情况做好准备。你如何准备?

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

对于执行:您在多个节点上执行相同的执行。这称为推测执行。一旦从多次执行中获得第一个结果,就取消其他执行。

这就是答案——您复制数据以应对节点可能出现故障的情况。


  1. 为了解决节点故障,首选项列表包含 N 个以上的节点。这个“节点”是指虚拟节点吗?

我想确保我总是可以进入我的房子。所以我复制了我家的钥匙,并把它们交给了我的另一个家庭成员。这家伙把那些钥匙放在我们家的保险箱里。现在,当我们都出去的时候,我错觉我们还有另一套钥匙,所以万一我丢了我的,我们仍然可以进屋。但是……那些钥匙就在房子里。丢失我的钥匙仅仅意味着我无法进入我的房子。如果我们在虚拟节点而不是物理节点上复制数据,就会发生这种情况。

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

如果目标是高可用性(这是 Dynamo DB 中的目标),则此“节点”不能表示虚拟节点。

于 2016-04-23T16:00:24.560 回答