为什么以及何时在实际生产场景中使用Cassandra中的VNode?

为什么以及何时在实际生产场景中使用Cassandra中的VNode?,cassandra,cassandra-2.0,cql3,cassandra-cli,nosql,Cassandra,Cassandra 2.0,Cql3,Cassandra Cli,Nosql,我知道您不必重新平衡VNode,但我们何时真正使用VNode 生产场景中的it?它的功能是否与物理单个令牌节点相同?如果是这样,那么为什么要使用单令牌节点呢?如果我有大量数据和集群大小(比如300个节点),vnodes是否有帮助?使用vnodes的主要好处是在引导新节点时,数据流分布更加均匀。为什么?那么,当添加一个新节点时,它将请求其令牌范围内的数据。最理想的情况是,它所请求的数据将均匀地分布在所有节点上,从而减少所有节点向引导节点发送数据的工作负载(并加快引导过程) 一旦有了大量的物理节点(

我知道您不必重新平衡VNode,但我们何时真正使用VNode
生产场景中的it?它的功能是否与物理单个令牌节点相同?如果是这样,那么为什么要使用单令牌节点呢?如果我有大量数据和集群大小(比如300个节点),vnodes是否有帮助?

使用vnodes的主要好处是在引导新节点时,数据流分布更加均匀。为什么?那么,当添加一个新节点时,它将请求其令牌范围内的数据。最理想的情况是,它所请求的数据将均匀地分布在所有节点上,从而减少所有节点向引导节点发送数据的工作负载(并加快引导过程)

一旦有了大量的物理节点(比如300个),这种好处似乎就会减少(假设没有热点或数据分区问题)。除了文档中的内容之外,我还不知道有什么实际的指南引用了要使用或不使用VNode的节点数。是的,在生产中可以看到

更多信息可在此处找到:

除了克里斯的精彩回答之外,我还要补充一点。当您有一个带有VNode的大型集群时,让Cassandra管理令牌范围是很有帮助的。如果没有VNode,您将不得不自己调整每个(现有和)新节点的大小并重新指定令牌范围。通过vnodes,Cassandra可以为您处理这些问题

比较文档中列出的步骤的差异:

添加不带VNode的节点:

vs

使用VNode添加: