初始令牌是 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 个相比,它现在拥有大量数据。