初始令牌是 cassandra 未按预期工作
Initial Token is cassandra is not working as expected
为了理解没有 vNodes 的环,我尝试在节点 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 - 主/分区键)。
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中提供的token是token总数而不是分区范围?如果是这样,分区范围是如何计算的?
谢谢,
哈利
令牌号是分区键的哈希值。这决定了数据应该存储在哪里。
(参考: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 个相比,它现在拥有大量数据。
为了理解没有 vNodes 的环,我尝试在节点 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 - 主/分区键)。
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中提供的token是token总数而不是分区范围?如果是这样,分区范围是如何计算的?
谢谢, 哈利
令牌号是分区键的哈希值。这决定了数据应该存储在哪里。
(参考: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 个相比,它现在拥有大量数据。