2013-05-31 233 views
5

我只是想了解在卡桑德拉复制的机制。我读到数据分布Datastax链路:卡桑德拉如何复制数据

http://www.datastax.com/docs/1.2/cluster_architecture/data_distribution

在一致的散列部它告诉卡桑德拉创建用于每个主密钥散列值,并基于该数据发送到容纳所生成的散列值的节点。之后,它显示数据在群集中的分布。现在我的问题是,它如何根据散列值将此数据复制到群集中的其他节点。

这可能是非常基本的问题。如果可能的话,请用示例来解释

回答

10

找到复制方式取决于复制策略。对于SimpleStrategy与复制因子N无虚拟节点卡桑德拉执行以下操作:

  1. 哈希关键
  2. 查找具有最小令牌大于或等于哈希值,如果有必要缠绕
  3. Store中的节点该节点和在令牌顺序

随后的N-1个节点作为一个例子对键,假设节点具有令牌0,10,20,30和您的复制因子是2。如果您的键具有散列14然后它将被存储在带有令牌20和30的节点上。如果你的密钥有ha sh 28然后它将被存储在具有标记30和0的节点上。

如果使用虚拟节点,则使用相同的想法,但是如果物理节点已经收到密钥,则虚拟节点将作为副本被跳过。

如果使用NetworkTopologyStrategy,则在达到该数据中心的配额时跳过节点。

+1

谢谢理查德。这让我想到它是如何工作的。还有一个问题就是:当你说环绕时,按照你给出的例子,当散列值为28时,范围为30的节点按照规则2限定,但是它到零的节点,因为它是环中的下一个节点。请建议我的理解是否正确。 –

+0

是的,这是正确的。 – Richard

+0

嗨,理查德,你能解释一下NetworkTopologyStrategy的配额是什么意思?这是您在创建密钥空间时指定的内容吗?如果DC仅包含一个机架,其复制配额是否会超过1?谢谢! – kirbo