我只是想了解在卡桑德拉复制的机制。我读到数据分布Datastax链路:卡桑德拉如何复制数据
http://www.datastax.com/docs/1.2/cluster_architecture/data_distribution
在一致的散列部它告诉卡桑德拉创建用于每个主密钥散列值,并基于该数据发送到容纳所生成的散列值的节点。之后,它显示数据在群集中的分布。现在我的问题是,它如何根据散列值将此数据复制到群集中的其他节点。
这可能是非常基本的问题。如果可能的话,请用示例来解释
我只是想了解在卡桑德拉复制的机制。我读到数据分布Datastax链路:卡桑德拉如何复制数据
http://www.datastax.com/docs/1.2/cluster_architecture/data_distribution
在一致的散列部它告诉卡桑德拉创建用于每个主密钥散列值,并基于该数据发送到容纳所生成的散列值的节点。之后,它显示数据在群集中的分布。现在我的问题是,它如何根据散列值将此数据复制到群集中的其他节点。
这可能是非常基本的问题。如果可能的话,请用示例来解释
找到复制方式取决于复制策略。对于SimpleStrategy与复制因子N无虚拟节点卡桑德拉执行以下操作:
随后的N-1个节点作为一个例子对键,假设节点具有令牌0,10,20,30和您的复制因子是2。如果您的键具有散列14然后它将被存储在带有令牌20和30的节点上。如果你的密钥有ha sh 28然后它将被存储在具有标记30和0的节点上。
如果使用虚拟节点,则使用相同的想法,但是如果物理节点已经收到密钥,则虚拟节点将作为副本被跳过。
如果使用NetworkTopologyStrategy,则在达到该数据中心的配额时跳过节点。
我了解到有关cassandra虚拟节点的分布 http://www.datastax.com/documentation/cassandra/2.0/cassandra/architecture/architectureDataDistributeDistribute_c.html。图形的底部,每个虚拟节点在不同的物理节点上有3个副本,在分配虚拟节点时确定的复制范围是多少?
谢谢理查德。这让我想到它是如何工作的。还有一个问题就是:当你说环绕时,按照你给出的例子,当散列值为28时,范围为30的节点按照规则2限定,但是它到零的节点,因为它是环中的下一个节点。请建议我的理解是否正确。 –
是的,这是正确的。 – Richard
嗨,理查德,你能解释一下NetworkTopologyStrategy的配额是什么意思?这是您在创建密钥空间时指定的内容吗?如果DC仅包含一个机架,其复制配额是否会超过1?谢谢! – kirbo