Cassandra如何在多数据中心多机架多节点设置中识别复制节点

时间:2017-07-31 10:22:08

标签: cassandra-3.0

据我所知,Cassandra尝试在不同的机架上复制数据 - 不同的DC来处理故障转移...... 例如:假设我总共有8个节点集群跨越2个不同的DC,每个DC有2个机架。

节点1 - DC1 RACK 1 |节点2 - DC1 RACK 1 |节点3 - DC1 RACK 2 |节点4 -  DC1 RACK 2 |节点5 - DC2 RACK 1 |节点6 - DC2 RACK 1 |节点7 - DC2 RACK 2 |  节点8 - DC2 RACK 2

现在如果我有3的RF,那么在写一行时,     Cassandra将在节点上存储该行的第一个副本(在本例中为节点1),它负责第1行的令牌范围。     因此,第一个副本存储在节点1中,节点1在DC 1,RACK 1下 现在,Cassandra需要再存储2个复制品以满足RF = 3的标准。

1)让我们说处理机架故障&有本地读取它存储在同一DC但不同RACK的某个节点中的第二个副本。    因此,第二个副本将存储在节点3 /节点4中,它们位于DC 1,RACK 2中。    我的问题是Cassandra选择节点3或节点4的基础。它如何确定节点3在节点4上得到预感的原因,反之亦然。

2)为了处理DC故障,它将第3个副本存储在其他DC(DC2)中。     现在它有两个选择:         a)必须在DC2中选择机架1和机架2之间的机架之一。              - 我的第二个问题是它在同一数据中心的多个机架中选择的基础/逻辑。         b)让我们想象一下,如果它选择DC 2中的机架1,那么它必须在节点5或节点6之间进行选择以进行复制。              - 我的第三个问题是Cassandra在Same Rack中选择节点的基础? (与第1个问题基本相同)

1 个答案:

答案 0 :(得分:1)

这取决于您为密钥空间选择的复制策略。 在SimpleStrategy中它只需要环上的连续节点 - 这对于单个DC来说是一个简单的策略(我猜你不使用它但是为了完整性而添加)

NetworkTopologyStrategy中你需要定义每个DC的复制次数,Cassandra将顺时针走环,直到到达另一个机架的第一个节点。
见:Cassandra data replication docsa blog with nice visuals

的问候,
尊利