📜  Cassandra 中的仲裁一致性

📅  最后修改于: 2021-09-09 10:42:42             🧑  作者: Mango

在本文中,我们将讨论仲裁一致性如何在 Cassandra 中提供帮助以及我们如何计算它,并讨论仲裁一致性的工作原理。

什么是仲裁一致性?
Quorum 一致性是 Cassandra 中的一致性机制,用于确保在 Cassandra 中定义读写一致性时有多少节点会响应。在仲裁一致性中,副本的大多数 (n/2 +1) 个节点必须响应。

在 Quorum 中,我们检查大多数副本(这仅表示复制因子的数量)。例如,如果我们在 2 个数据中心中有 3 的复制因子,那么它们的副本将有多少。因此,将有 6 个,多数为 4。(total_sum_replicas/2 + 1)。

通常,我们在大多数情况下使用本地仲裁,如果在 3 个数据中心中各有 3 个副本,我们需要来自 LOCAL DC 的 2 个节点才能成功。

现在,我们将在这里定义相同的 CQL 查询。我们来看一下。

CREATE KEYSPACE cluster1
with replication =  {'class' : 'NetworkTopologyStrategy', 
                     'DC1': 3, 'DC2': 3, 'DC3': 3}
AND DURABLE_WRITES = false; 

为了验证结果,使用下面给出的以下 CQL 查询。

SELECT * 
FROM system_schema.keyspaces; 

输出:

如何计算 QUORUM?
这就是我们计算法定人数的方式,这只是意味着有多少节点会确认。

Quorum = (sum_of_replication_factors / 2) + 1 

Quorum 等于复制因子之和除以 2 再加上 1。这是因为它是整数。

仲裁一致性:
每个数据中心的所有 replication_factor 设置的总和是 sum_of_replication_factors。

Total_sum_of_replication_factor = DC1_RF + DC2_RF + DC3_RF+ ... +DC_RF 

仲裁一致性如何工作?
如果有三个节点占多数并且它们必须以仲裁一致性响应,那么在下面的给定图表中,确认显示有三个节点响应,并且在写入数据时提交的节点显示我们将数据提交到三个节点。

在上图中,如果我们将数据插入表中并且 RF = 3,这意味着数据将复制到三个可用的节点上,这显示在已提交的图中。在确认图的情况下,如果我们正在读取数据并且总共有 5 个节点并应用仲裁一致性,那么 (5/2 +1) 个节点必须响应。因此,在图中很清楚三个节点如何可用并确认相同。