6

我只是想了解 Cassandra 中的复制机制。我阅读了有关数据分发的 Datastax 链接:

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

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

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

4

2 回答 2

12

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

  1. 散列密钥
  2. 找到具有大于或等于哈希的最小令牌的节点,必要时环绕
  3. 按令牌顺序将密钥存储在该节点和接下来的 N-1 个节点上

例如,假设您的节点具有令牌 0、10、20、30,并且您的复制因子为 2。如果您的密钥具有哈希 14,那么它将存储在具有令牌 20 和 30 的节点上。如果您的密钥具有哈希 28,那么它将存储在令牌 30 和 0 的节点上。

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

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

于 2013-05-31T10:59:09.013 回答
0

我在站点http://www.datastax.com/documentation/cassandra/2.0/cassandra/architecture/architectureDataDistributeDistribute_c.html上了解了有关 cassandra 与虚拟节点的分布 。下图,每个虚拟节点在不同的物理节点中都有3个replica,那么在分配虚拟节点时,是否确定了replication策略呢?

于 2014-05-26T15:55:55.187 回答