Cassandra中Vnodes的意义

San*_* Km 3 cassandra

从网址:http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2,他们说:

"如果我们将整个集群中的随机化vnode分布在一起,我们仍然需要传输相同数量的数据,但现在它在集群中所有机器上分布的数量更小的范围内.这使我们能够重建节点比每个节点单个令牌方案更快."

看来上面的句子表示,当我们用一个具有相同num_tokens的新节点(比如num_tokens:4)替换死节点时,替换节点包含与死节点在释放这些标记值之前具有的相同标记值.

但是Vnodes为每个节点生成随机令牌值,那么如何用相同的Vnodes令牌值替换节点呢?

在解释使用VNODES概念用新节点替换死节点的概念时,URL似乎令人困惑.如果有人能够澄清如何使用Vnode来替换具有精确令牌值范围的死节点,那将是很好的.

提前致谢.

Bra*_*ing 8

首先,应将vnode参数num_tokens设置为较小的数字,DataStax的当前建议为8(8).原始默认值为256,经验发现太高.

使用传统令牌范围,您只能拥有与节点一样多的范围.但是,使用vnodes,令牌范围的数量是虚拟化的并且要大得多.您不能在同一数据中心(环)中混合使用vnode和令牌范围.

令牌范围的节点故障:

在此输入图像描述

在上面带有令牌范围的DataStax示例中,范围C,D和E的数据仅驻留在三个节点上:

  • 范围C由节点3拥有并在节点4和5上复制
  • 范围D由节点4拥有并在节点5和6上复制
  • 范围E由节点5拥有并在节点6和1上复制

在此示例中,当节点5发生故障时,将重新加载范围C,D和E,并仅从剩余的五个节点中的三个节点流式传输:1,3和4.节点2不具有任何节点5数据和节点6具有由节点1流式传输的相同数据.因此,节点2和5在重建期间是空闲的.

节点故障与Vnode:

但是,在使用vnode时,令牌范围被分成较小的范围,并在整个6个节点的集群中随机化.对于较小的范围,节点5的一部分数据被复制到每个其他节点.

在此输入图像描述

重建节点5时,现在可以从群集中的所有5个可用节点流式传输数据.

vnodes的主要优点是:

  • 在添加或删除节点时,不再需要手动重新平衡群集
  • 重建可以从所有可用节点流式传输数据