Dynamo 中的虚拟节点

Virtual Nodes in Dynamo

最近看了亚马逊的key/value存储系统Dynamo的论文。 Dynamo 使用一致性哈希算法作为分区算法。为了解决负载均衡和异构的挑战,它应用了"virtual node"机制。这是我的问题:

  1. 描述为“一个节点的虚拟节点数 responsible can decide based on its capacity”,但它的能力是什么 是?是计算能力,网络带宽,还是磁盘 音量?
  2. 将节点分区到"virtual nodes"的技术是什么?虚拟节点只是一个进程吗?或者可能使用 docker 或虚拟机?

无需详细说明,#1 的答案是:以上所有。在 运行 一些负载测试并记录结果后,可以根据经验确定不同节点类型的容量。与您用来确定 Web 服务器容量的过程类似。

关于你的第二个问题,论文只是说你应该从逻辑的角度考虑节点。为了满足#1,环中的节点被指定为一个或多个节点将哈希到相同的物理硬件。所以一个虚拟节点只是一个逻辑映射。它只是物理层之上的抽象层。如果您熟悉文件系统,请考虑像 iNode 这样的虚拟节点与磁盘柱面(比较可能有点过时)