有人能解释一下Cassandra中vnodes分配的工作原理吗? 如果我们有一个N个节点的集群并且添加了一个新节点,那么如何将令牌范围分配给这个新节点?
答案 0 :(得分:2)
添加或删除节点时会自动重新平衡群集。当节点加入群集时,它承担来自群集中其他节点的偶数部分数据的责任。如果节点发生故障,则负载将均匀地分布在群集中的其他节点上。
以下是一些可能有助于您更好地了解vnode如何工作以及如何分配范围的阅读 - Virtual nodes in Cassandra 1.2
如上所述,Cassandra会自动处理群集中每个节点的令牌范围计算,与num_tokens值成比例。 vnodes的令牌分配由org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator类计算。
当一个新节点加入群集时,它将注入它自己的范围并从现有节点窃取一些暴怒。此video可能会有所帮助