cassandra如何复制数据

时间:2013-05-31 10:23:37

标签: cassandra

我很想知道Cassandra中的复制机制。我阅读了有关数据分发的Datastax链接:

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

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

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

2 个答案:

答案 0 :(得分:11)

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

  1. 哈希密钥
  2. 找到具有大于或等于哈希值的最小令牌的节点,必要时包围
  3. 将密钥存储在该节点上,并按令牌顺序存储下一个N-1个节点
  4. 例如,假设您的节点有令牌0,10,20,30,并且您的复制因子是2.如果您的密钥有散列14,那么它将存储在带有令牌20和30的节点上。如果您的密钥有然后它将被存储在具有标记30和0的节点上。

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

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

答案 1 :(得分:0)

我在网站上了解了关于cassandra与虚拟节点的分布 http://www.datastax.com/documentation/cassandra/2.0/cassandra/architecture/architectureDataDistributeDistribute_c.html。在图形的底部,每个虚拟节点在不同的物理节点中都有3个副本,在分配虚拟节点时确定的复制策略是什么?