Cassandra 卡桑德拉虚拟节点

Cassandra 卡桑德拉虚拟节点,cassandra,Cassandra,虽然它被问了很多次,回答了很多次,但我还是没有找到一个好的答案。 无论是在论坛上还是在卡桑德拉文档中 虚拟节点是如何工作的 假设一个节点有256个虚拟节点。 医生说它们是随机分布的。 (抛开这种“随机”的做法……我还有一个更紧迫的问题): 每个cassandra节点(“物理节点”)实际上负责环中几个不同的位置,对吗?(适用于256个地点)?这是否意味着“物理”节点在整个循环中“扩散” 在这种情况下,重新平衡是如何工作的?如果我添加一个新节点? 环将获得额外的256个节点。 这些附加节点将如何与旧

虽然它被问了很多次,回答了很多次,但我还是没有找到一个好的答案。 无论是在论坛上还是在卡桑德拉文档中

虚拟节点是如何工作的

假设一个节点有256个虚拟节点。 医生说它们是随机分布的。 (抛开这种“随机”的做法……我还有一个更紧迫的问题):

  • 每个cassandra节点(“物理节点”)实际上负责环中几个不同的位置,对吗?(适用于256个地点)?这是否意味着“物理”节点在整个循环中“扩散”

  • 在这种情况下,重新平衡是如何工作的?如果我添加一个新节点? 环将获得额外的256个节点。 这些附加节点将如何与旧节点划分数据? 基本上,它们会以附加的“自行车辐条”的形式随机分布在整个环中吗


  • 互联网上有很多信息,但没有人做出明确的解释…

    v节点将可用的令牌范围划分为更小的范围,由cassandra.yaml文件中的num_令牌设置定义。vnode范围在集群中随机分布,通常是不连续的。如果我们使用大量的num_令牌来划分令牌范围,随机分布意味着我们不太可能有热点。使用统计计算,使用256个Vnode时,所有大小的集群始终具有良好的令牌范围平衡。因此,社区建议使用num_tokens默认值256来防止集群中的热点

    Ans 1:-这是一系列基于num_标记的标记。如果您设置了256,您将得到默认的256个令牌范围

    Ans 2:-是,当您添加或删除节点时,令牌将根据vnodes配置再次分布在集群中


    有关更多详细信息,请参见此处

    v节点将可用令牌范围划分为更小的范围,由cassandra.yaml文件中的num_令牌设置定义。vnode范围在集群中随机分布,通常是不连续的。如果我们使用大量的num_令牌来划分令牌范围,随机分布意味着我们不太可能有热点。使用统计计算,使用256个Vnode时,所有大小的集群始终具有良好的令牌范围平衡。因此,社区建议使用num_tokens默认值256来防止集群中的热点

    Ans 1:-这是一系列基于num_标记的标记。如果您设置了256,您将得到默认的256个令牌范围

    Ans 2:-是,当您添加或删除节点时,令牌将根据vnodes配置再次分布在集群中


    有关更多详细信息,请参见此处

    让SQL回答正确。另见。我只想补充几点意见:

  • 是的,“物理”节点分布在令牌范围内
  • 如链接中所述,任何新节点都将采用256个新的令牌范围,将现有的令牌范围进行划分。没有其他的再平衡,它依靠随机性来实现一些再平衡,这就是为什么它在每个节点上使用相对较大(256)个令牌的原因
  • 值得一提的是,还有另一种选择。您可以使用令牌分配算法在每个节点(4-8个)上运行令牌数量较少的VNode。任何新令牌都不会随机分配,将使用贪婪算法,以便新令牌将创建一个分配,以优化给定密钥空间上的负载。它将简单地将包含大多数数据的令牌范围分成一半。因为它不是随机的,所以可以使用较少数量的令牌(4-8)。这与小型集群无关,但对于100多个节点来说,这是可以做到的


    见和

    LetsNoSQL的答案是正确的。另见。我只想补充几点意见:

  • 是的,“物理”节点分布在令牌范围内
  • 如链接中所述,任何新节点都将采用256个新的令牌范围,将现有的令牌范围进行划分。没有其他的再平衡,它依靠随机性来实现一些再平衡,这就是为什么它在每个节点上使用相对较大(256)个令牌的原因
  • 值得一提的是,还有另一种选择。您可以使用令牌分配算法在每个节点(4-8个)上运行令牌数量较少的VNode。任何新令牌都不会随机分配,将使用贪婪算法,以便新令牌将创建一个分配,以优化给定密钥空间上的负载。它将简单地将包含大多数数据的令牌范围分成一半。因为它不是随机的,所以可以使用较少数量的令牌(4-8)。这与小型集群无关,但对于100多个节点来说,这是可以做到的


    见和

    请尝试每个问题问一个问题。请尝试每个问题问一个问题。那么,每个物理节点负责圆圈中的N(256)个哈希范围?如何提供分区?如何确保分区有足够的磁盘空间,限制在1个散列范围内(我的意思是256个分区中的一个)?如果一个分区可以分布在N个这样的散列范围内,那么如何确保它们都属于同一个物理节点呢?是的,每个节点将负责循环中的N个散列范围。事实上,它不仅仅是N*,因为每个节点都有副本。可以使用创建您自己的令牌分发。根据定义,属于一个分区键的所有数据都将映射到单个令牌范围(因为应用于分区键的哈希函数将创建一个值)。如果一个分区键将有如此多的数据,您可能需要重新考虑您的分区。那么,每个物理节点负责循环中的N(256)个哈希范围?如何提供分区?如何确保