在本文中,我们将讨论 Cassandra 中的一致性级别,这对于 Cassandra 中的高可用性和高机制非常有帮助。让我们一一讨论。
首先,我们将定义密钥空间的场景,在该场景中,我们将展示我们如何拥有不同的数据中心,并且每个数据中心包含 3 个副本。我们来看一下。
CREATE KEYSPACE cluster_consistency
with replication = {'class' : 'NetworkTopologyStrategy',
'DC1': 3, 'DC2': 3, 'DC3': 3}
AND DURABLE_WRITES = false;
在上面的 CQL 查询中,我们有三个不同的数据中心,例如 DC1、DC2 和 DC3。每个数据中心有 3 个副本,这意味着复制因子为 3(RF = 3)。
让我们考虑一个场景,每 3 个数据中心有 3 个复制因子。
- LOCAL_ONE :
在这个一致性级别,我们需要 1 个节点从本地 dc 响应才能成功。 - LOCAL_QUORUM :
在这个一致性级别,我们需要 2 个节点从本地 dc 响应才能成功。 - EACH_QUORUM :
在这个一致性级别,我们需要每个 dc 中的2 个节点才能成功。因此,从每个数据中心,如果 2 个节点将响应,则在这种情况下总共 6 个节点。 - LOCAL_SERIAL :
此一致性级别类似于 LOCAL_QUORUM。在这个一致性级别,我们需要来自 LOCAL DC 的 2 个节点才能成功。但是,在 LOCAL _SERIAL 一致性级别有很多额外的流量(至少 4 次往返)来强制执行 Cassandra 中的顺序和一致性。 - 一:
在这个一致性级别中,ONE 的写一致性级别必须写入至少一个副本节点的提交日志和内存表。在这方面,我们需要来自任何 DC 的 1 个节点才能成功。 - 二:
在这个一致性级别中,TWO 的写一致性级别必须写入至少两个副本节点的提交日志和内存表。在这种情况下,我们需要 2 个节点才能成功响应来自 ANY DC 的响应。 - 三 :
在此一致性级别中,必须将三个写入一致性级别写入至少三个副本节点的提交日志和内存表。在这种情况下,我们需要 3 个节点才能成功响应来自 ANY DC 的响应。 - 法定人数:
在此一致性级别中,必须将写入一致性级别写入所有数据中心的仲裁副本节点上的提交日志和内存表。在此一致性级别 (n/2 +1) 节点需要 (9/2 +1) 5 个节点才能成功响应来自任何 DC 的响应。 - 序列号:
它就像 QUORUM 一致性。在这种一致性中,我们需要来自任何数据中心的 5 个节点才能成功。但是,串行级别的一致性也有很多额外的流量(至少 4 次往返)来强制执行顺序和一致性。 - 全部:
在这个一致性级别,我们需要所有 9 个副本才能成功。因此,在写入一致性的情况下,如果任何节点关闭,则写入失败。对于 ALL 的读取一致性级别,这意味着所有副本都已响应。如果副本没有响应,它将失败。