cassandra虚拟节点

e4eetjau  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(385)

虽然它被问了很多次,回答了很多次,但我还是没有找到一个好的答案。无论是在论坛上还是在Cassandra文档中。
虚拟节点如何工作?
假设一个节点有256个虚拟节点。医生说它们是随机分发的(抛开那些“随机”的做法……我还有一个更紧迫的问题):
是不是每个cassandra节点(“物理节点”)实际上负责环中几个不同的位置(256个位置)?这是否意味着“物理”节点在整个循环中“扩散”?
在这种情况下,如何重新平衡工作?如果我添加一个新节点?环将获得额外的256个节点。这些额外的节点将如何与旧节点划分数据?它们会不会,基本上,作为额外的“自行车辐条”随机分布在整个环?
网上有很多信息,但没人能解释清楚。。。

bt1cpqcv

bt1cpqcv1#

vnode将可用的令牌范围划分为更小的范围,由cassandra.yaml文件中的num\u tokens设置定义。vnode范围在集群中随机分布,通常是不连续的。如果我们使用大量的num\u令牌来划分令牌范围,则随机分布意味着不太可能出现热点。使用统计计算,使用256个vnode时,所有大小的集群始终具有良好的令牌范围平衡。因此,num_tokens的默认值256是社区为防止集群中的热点而推荐的。
答案1:这是一系列基于numèu标记的标记。如果您设置了256,您将得到256个令牌范围,这是默认值。
ans 2:-是的,当您添加或删除节点时,令牌将根据vnodes配置在集群中再次分发。
你可以参考这里的更多细节https://docs.datastax.com/en/ddac/doc/datastax_enterprise/dbarch/archdatadistributevnodesusing.html

myss37ts

myss37ts2#

我们的答案是正确的。另请参见https://stackoverflow.com/a/37982696/5209009. 我只想补充几点意见:
是的,“物理”节点分布在令牌范围内。
如链接中所述,任何新节点都将采用256个新的令牌范围,将一些现有的令牌范围分开。没有其他的再平衡,它依赖于随机性来实现一些再平衡,这就是为什么它在每个节点上使用相对大量(256)个令牌。
值得一提的是,还有另一种选择。您可以使用令牌分配算法在每个节点(4-8)中使用较少数量的令牌来运行vnode。任何新令牌都不会随机分配,将使用贪婪算法,以便新令牌将创建一个分配,以优化给定密钥空间上的负载。它只需将包含大多数数据的标记范围分成一半。因为它不是随机的,所以可以使用较少数量的令牌(4-8)。它实际上与小型集群无关,但对于100多个节点来说,它是可以的。
看到了吗https://www.datastax.com/blog/2016/01/new-token-allocation-algorithm-cassandra-30 以及https://thelastpickle.com/blog/2019/02/21/set-up-a-cluster-with-even-token-distribution.html.

相关问题