Cassandra中Vnodes的意义

时间:2016-07-17 17:16:45

标签: cassandra

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

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

以上句子表示,当我们用一个具有相同num_tokens的新节点(比如num_tokens:4)替换死节点时,替换节点包含与死节点相同的令牌值,然后才释放这些令牌值。 / p>

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

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

提前致谢。

1 个答案:

答案 0 :(得分:6)

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

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

令牌范围的节点失败:

enter image description here

在上面带有令牌范围的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的一部分数据被复制到每个其他节点。

enter image description here

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

vnodes的主要优点是:

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