cassandra中的4节点设置与3节点设置相同

时间:2017-11-24 07:51:51

标签: cassandra cassandra-2.0 high-availability cassandra-3.0 cassandra-2.1

我在Cassandra中有一个4节点设置,并决定使用以下配置,但ppl说这将与3节点设置相同,所以有人可以给我一个亮点并说出原因,

Nodes = 3, Replication Factor = 2, Write Consistency = 2, Read Consistency = 1
Nodes = 4, Replication Factor = 3, Write Consistency = 3, Read Consistency = 1

根据我的理解,Nodes = 4,提供两个节点故障,将RF作为' 3'但是人们说在4节点设置中RF = 2将与RF = 3相同,你能解释一下原因吗?

谢谢, 哈利

1 个答案:

答案 0 :(得分:4)

你的问题有点不清楚,因为我认为你没有正确构建这个问题。但我会尝试解释一些可以帮助你理解它的观点。

  
    

节点= 4,提供两个节点故障,将RF设置为“3”

是有益的   
  1. 节点数不计算读/写失败的因素。 RF(复制因子)和CL(一致性级别)是读/写失败的决定因素(如果需要复制或节点关闭)。
  2. RF - >将保留多少份数据(行)。 (有多少服务器或节点将保留相同的行/数据)。

    CL - >确认需要多少个节点才能让客户端知道/通知写/读操作是否成功。这意味着至少提到CL的节点数量(例如:如果CL是2个至少2个节点)必须确认/确保他们已成功写入数据或从这些副本中读取数据(等待所有必需的副本返回(协调器节点的结果)并合并结果(如果不同节点具有相同数据的不同更新,则保留最新数据)并成功将结果返回给客户端。

    注意:如果RF = CL,那么您使用的CL等同于ALL。

    所有是最高级别的一致性级别(数据肯定是最新的,但如果单个副本已关闭则无法使用)

    情景1:

    Nodes = 3, Replication Factor = 2, Write Consistency = 2, Read Consistency = 1

    对于写操作:

    由于您使用了最高级别的写入CL(RF和写入CL值相同),因此这将是单点故障的情况。所有必需的副本必须处于活动状态,以确认客户端已在两个节点中成功写入数据。

    对于读取操作:

    阅读CL是ONE。因此,如果一个副本关闭,它可以存活。因为只有一个副本需要将结果返回给客户端。它可能是旧数据(如果数据更新仍未传播到此节点,但最终会保持一致),但读取将成功。

    情景2:

    Nodes = 3, Replication Factor = 3, Write Consistency = 2, Read Consistency = 1

    对于写操作:

    当节点数= RF时,所有数据都将被复制到所有节点中(100%拥有)。它将在一个节点/副本中存活下来。

    对于读取操作: 如果两个副本都关闭,它可以存活。

    场景3:

    Nodes = 4, Replication Factor = 2, Write Consistency = 2, Read Consistency = 1

    对于写操作:

    与方案1相同。

    对于读取操作:

    与方案1相同。

    情景4:

    Nodes = 4, Replication Factor = 3, Write Consistency = 3, Read Consistency = 1

    对于写操作:

    与方案1相同。

    对于读取操作:

    与方案2相同。

    相关链接:

    Understand cassandra replication factor versus consistency level

    有关详情,请点击 DataStax Doc

    被修改

    如果您担心节点故障情况(读取或写入请求失败),节点数无关紧要。

    假设您有3/4/5个节点,如果RF为3且CL为QUORUM(3/2 + 1~2),则群集可以容忍1个副本节点关闭。请阅读上面链接中的About the QUORUM level部分。

    如果您有更多节点,则群集可以处理更多数据或在节点之间正确加载和分发数据。但请求失败的情况将是相同的。

      

    节点= 3,复制因子= 3,写入一致性= 2,读取   一致性= 1

         

    节点= 4,复制因子= 3,写入一致性= 2,读取   一致性= 1

         

    节点= 5,复制因子= 3,写入一致性= 2,读取   一致性= 1

    当RF为3且Write和Read CL分别为2和1时,群集可以容忍一个副本用于写入,两个副本用于读取操作。我希望这会对你有所帮助。