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