初始令牌是cassandra没有按预期工作

时间:2017-12-04 08:05:24

标签: cassandra partition cassandra-3.0

要了解没有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中提供的令牌是令牌的总数而不是分区范围?如果是这样,如何计算分区范围?

谢谢, 哈利

1 个答案:

答案 0 :(得分:1)

令牌号是分区键的哈希值。这决定了数据的存储位置。

(参考:https://www.datastax.com/dev/blog/repair-in-cassandra):enter image description here

在此图片中,N0被分配了令牌0,N1被分配了令牌10,依此类推。通过这样做,我们说N1负责令牌范围1-10。但是,如果我们使用RF 3,那么我们说N1负责令牌范围81-10。你在你的例子中所做的是说60拥有51-25。由于总共有2 ^ 127个令牌(取决于您的分区),这意味着它现在拥有大量数据,而不是61.