Cassandra Vnodes和令牌范围

时间:2016-06-21 09:31:57

标签: cassandra

我知道Vnodes通过在cassandra.yaml文件中设置num_tokens为每个节点形成许多令牌范围。

比如说(a),我有6个节点,每个节点我都设置了num_token = 256。在这6个节点中形成了多少个虚拟节点,即每个物理节点中包含多少虚拟节点或子令牌范围。

根据我的理解,当每个节点都将num_token指定为256时,则表示所有6个节点各包含256个vnode。这个陈述是真的吗?如果没有那么,vnodes如何形成每个节点中的标记范围(显然是随机的)。如果有人能用上面提到的例子(a)解释我,那将是非常方便的。

这个网址中的Vnode表示什么:=> http://docs.datastax.com/en/cassandra/3.x/cassandra/images/arc_vnodes_compare.png(摘自:http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2

1 个答案:

答案 0 :(得分:8)

使用MurMur3哈希函数将Cassandra中的每个分区键转换为数字标记值。令牌范围在-2 ^ 63到+ 2 ^ 63 -1之间 num_token定义为节点分配的令牌范围数。这与签名的java long相同。每个节点计算令牌范围内的256个(num_tokens)随机值,并通知其他节点它们是什么,因此当节点需要协调对特定令牌的请求时,它根据复制因子和DC知道哪些节点负责它。 /机架放置。 对此功能的更好描述将是“自动令牌范围分配以获得更好的流功能”,称其为“虚拟”有点令人困惑。 在您的情况下,您有6个节点,每个节点设置256个令牌范围,因此您有6 * 256个令牌范围,每个心理节点包含256个令牌范围。

例如,考虑2个节点,其中num_tokens设置为4,令牌范围为0到100。 节点1计算令牌17,35,77,92 节点2计算令牌4,25,68,85 在这种情况下,环显示令牌范围的分布 节点2负责令牌范围4-17,25-35,68-77,85-92和其余节点1。