我有一个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个节点,由于所有节点都已关闭,因此无法更新。
答案 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。