Cassandra Vnodes和令牌范围

iq0todco  于 12个月前  发布在  Cassandra
关注(0)|答案(1)|浏览(155)

我知道Vnodes通过在cassandra.yaml文件中设置num_tokens为每个节点形成了许多令牌范围。
例如(a),i具有6个节点,每个节点i设置num_token=256。在这6个节点之间形成多少个虚拟节点,即,每个物理节点中包含多少个虚拟节点或子令牌范围。
根据我的理解,当每个节点都分配了num_token为256时,这意味着所有6个节点都包含256个vnode。这种说法是真的吗?如果不是,则vnode如何在每个节点中形成令牌的范围(显然是随机的)。如果有人能用(a)中提到的例子来解释我,那就太方便了。
在这个url中V节点的环表示什么:=> 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

6tdlim6h

6tdlim6h1#

Cassandra中的每个分区键都使用MurMurMur 3哈希函数转换为数字令牌值。令牌范围在-263到+263-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负责其余的令牌范围。

相关问题