要了解没有vNode的铃声,我尝试将节点1中的初始令牌设置为25,将节点2设置为50,如下所示,
Address Rack Status State Load Owns Token
50
172.30.56.60 rack1 Up Normal 82.08 KiB 100.00% 25
172.30.56.61 rack1 Up Normal 82.09 KiB 100.00% 50
我希望在数据库中只应添加0到50之间的分区范围,但它允许我提供的任何主键/分区键值如下(user_id - primary / partition key)。
user_id | user_name | user_phone
------------+-----------+------------
999933333 | ram | 9003934069
111 | ram | 9003934069
1 | ram | 9003934069
111333333 | ram | 9003934069
1113333333 | ram | 9003934069
其中,user_id是主键/分区键。
这是否意味着initial_token中提供的令牌是令牌的总数而不是分区范围?如果是这样,如何计算分区范围?
谢谢, 哈利
答案 0 :(得分:1)
令牌号是分区键的哈希值。这决定了数据的存储位置。
(参考:https://www.datastax.com/dev/blog/repair-in-cassandra):
在此图片中,N0被分配了令牌0,N1被分配了令牌10,依此类推。通过这样做,我们说N1负责令牌范围1-10。但是,如果我们使用RF 3,那么我们说N1负责令牌范围81-10。你在你的例子中所做的是说60拥有51-25。由于总共有2 ^ 127个令牌(取决于您的分区),这意味着它现在拥有大量数据,而不是61.