Cassandra:当整个数据中心出现故障时会发生什么?

时间:2016-03-08 01:00:46

标签: cassandra datastax

我有一个Cassandra集群,其中包含3个数据中心,每个数据中心有6个节点 - DC1,DC2和DC3 like this。假设我有NetworkTopologyStrategy并且在创建键空间时,

CREATE KEYSPACE test WITH REPLICATION = {'class':'NetworkTopologyStrategy','DC1':3,'DC2':3,'DC3':3}

确保在每个数据中心的3个节点上复制任何写入,之后写入成功。

如果整个数据中心出现故障会怎样?

让我们说Dc3中的所有节点都会关闭!在这种情况下,写入更新表的请求,即使写入一致性级别为1(一致性级别:写入必须写入提交日志并且至少有一个副本节点可记忆。我会假设需要将其写入每个数据中心的至少一个节点。)会失败吗?此请求将尝试更新DC3中的至少3个节点,由于所有节点都已关闭,因此无法更新。

https://docs.datastax.com/en/cassandra/2.0/cassandra/architecture/architectureDataDistributeReplication_c.html

1 个答案:

答案 0 :(得分:1)

如果你写的CONSASSENCY LEVEL为1,你的写作不会失败。

<强>解释

您的密钥空间在每个数据中心指定3个副本,以确保每行数据有9个副本。 当您在CONSISTENCY LEVEL为ONE时写入协调员,一旦将数据写入单个节点的memtable和commitlog(只有一个节点,而不是每个数据中心一个节点),协调器将会成功。

那么复制品会发生什么?数据存储为暗示提示(默认为3小时),一旦节点启动就会复制(在您的情况下,数据中心3已启动)。如果节点在3小时之前未启动,则会尝试使用builtin repair mechanism修复数据。

  

确保在每个节点上的3个节点上复制任何写入   数据中心仅在写入成功之后

如果您使用CONSISTENCY LEVEL ONE写作,那么您的陈述并不成立。

有关详细信息 Multiple Datacenter Write

  

每个数据中心有三个副本:此配置允许   每个复制组的一个节点在强大的情况下失败   LOCAL_QUORUM的一致性级别或每个数据的多个节点故障   中心使用一致性级别ONE。