Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉如何复制数据_Cassandra - Fatal编程技术网

Cassandra 卡桑德拉如何复制数据

Cassandra 卡桑德拉如何复制数据,cassandra,Cassandra,我只是想了解卡桑德拉的复制机制。我阅读了有关数据分发的Datastax链接: 在一致性散列部分,它告诉Cassandra为每个主键创建散列值,并基于该值将数据发送到容纳生成的散列值的节点。然后显示集群中的数据分布。现在我的问题是它如何基于散列值将这些数据复制到集群中的其他节点 这可能是一个非常基本的问题。如果可能,请举例说明。找到副本的方式取决于复制策略。对于不带虚拟节点的复制因子为N的SimpleStrategy,Cassandra执行以下操作: 散列密钥 查找最小标记大于或等于哈希的节点,

我只是想了解卡桑德拉的复制机制。我阅读了有关数据分发的Datastax链接:

在一致性散列部分,它告诉Cassandra为每个主键创建散列值,并基于该值将数据发送到容纳生成的散列值的节点。然后显示集群中的数据分布。现在我的问题是它如何基于散列值将这些数据复制到集群中的其他节点


这可能是一个非常基本的问题。如果可能,请举例说明。

找到副本的方式取决于复制策略。对于不带虚拟节点的复制因子为N的SimpleStrategy,Cassandra执行以下操作:

  • 散列密钥
  • 查找最小标记大于或等于哈希的节点,必要时进行换行
  • 将密钥按令牌顺序存储在该节点和下一个N-1节点上
  • 例如,假设您的节点具有令牌0、10、20、30,并且您的复制因子为2。如果您的密钥具有散列14,那么它将使用令牌20和30存储在节点上。如果您的密钥具有散列28,那么它将使用令牌30和0存储在节点上

    如果使用虚拟节点,则使用相同的方法,但如果物理节点已接收密钥,则虚拟节点将作为副本跳过


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

    我了解了有关cassandra的分发,其中包含虚拟节点
    . 在图的底部,每个虚拟节点在不同的物理节点中有3个副本,因此在分配虚拟节点时,复制策略是确定的吗?

    谢谢。这让我了解了它的工作原理。关于这一点,还有一个问题:当你说环绕然后,根据你给出的例子,当散列值为28时,那么范围为30的节点符合规则2,但它转到范围为零的节点,因为这是环中的下一个节点。请说明我的理解是否正确。嗨,Richard,你能解释一下网络拓扑策略配额是什么意思吗?这是创建键空间时指定的吗?如果DC仅包含一个机架,其复制配额是否可以超过1?非常感谢。是的,配额指的是该DC中的副本数量。DC的配额可以大于机架数量。有一个关于此主题的说明视频:大约5分钟。您需要登录。