从网址:http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2,他们说:
"如果我们将整个集群中的随机化vnode分布在一起,我们仍然需要传输相同数量的数据,但现在它在集群中所有机器上分布的数量更小的范围内.这使我们能够重建节点比每个节点单个令牌方案更快."
看来上面的句子表示,当我们用一个具有相同num_tokens的新节点(比如num_tokens:4)替换死节点时,替换节点包含与死节点在释放这些标记值之前具有的相同标记值.
但是Vnodes为每个节点生成随机令牌值,那么如何用相同的Vnodes令牌值替换节点呢?
在解释使用VNODES概念用新节点替换死节点的概念时,URL似乎令人困惑.如果有人能够澄清如何使用Vnode来替换具有精确令牌值范围的死节点,那将是很好的.
提前致谢.
首先,应将vnode参数num_tokens设置为较小的数字,DataStax的当前建议为8(8).原始默认值为256,经验发现太高.
使用传统令牌范围,您只能拥有与节点一样多的范围.但是,使用vnodes,令牌范围的数量是虚拟化的并且要大得多.您不能在同一数据中心(环)中混合使用vnode和令牌范围.
令牌范围的节点故障:
在上面带有令牌范围的DataStax示例中,范围C,D和E的数据仅驻留在三个节点上:
在此示例中,当节点5发生故障时,将重新加载范围C,D和E,并仅从剩余的五个节点中的三个节点流式传输:1,3和4.节点2不具有任何节点5数据和节点6具有由节点1流式传输的相同数据.因此,节点2和5在重建期间是空闲的.
节点故障与Vnode:
但是,在使用vnode时,令牌范围被分成较小的范围,并在整个6个节点的集群中随机化.对于较小的范围,节点5的一部分数据被复制到每个其他节点.
重建节点5时,现在可以从群集中的所有5个可用节点流式传输数据.
vnodes的主要优点是:
归档时间: |
|
查看次数: |
2814 次 |
最近记录: |