Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cassandra中的4节点设置与3节点设置相同_Cassandra_Cassandra 2.0_High Availability_Cassandra 3.0_Cassandra 2.1 - Fatal编程技术网

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

cassandra中的4节点设置与3节点设置相同,cassandra,cassandra-2.0,high-availability,cassandra-3.0,cassandra-2.1,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 根据我的理解,节点=4,如果两个节点出现故障,将RF设置为“3”

我在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
根据我的理解,节点=4,如果两个节点出现故障,将RF设置为“3”是有益的,但ppl表示在4节点设置中,RF=2将与RF=3相同,请解释原因

谢谢,
哈利

你的问题有点不清楚,因为我认为你没有正确地提出这个问题。但我将尝试解释一些有助于你们理解它的观点

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

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

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

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

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

    场景1:

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

    对于写入操作:

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

    对于读取操作:

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

    场景2:

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

    对于写入操作:

    当节点数=RF时,所有数据将被复制到所有节点中(100%拥有)。它将在一个节点/副本关闭后继续存在

    对于读取操作: 如果两个复制品都坏了,它可以存活下来

    场景3:

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

    对于写入操作:

    与场景1相同

    对于读取操作:

    与场景1相同

    场景4:

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

    对于写入操作:

    与场景1相同

    对于读取操作:

    与场景2相同

    相关链接:

    有关详细信息,请参见

    编辑 如果您关心节点故障场景(读或写请求失败),则节点数量无关紧要

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

    如果您有更多的节点,集群可以处理更多的数据,或者在节点之间正确地加载和分发数据。但是请求故障转移场景将是相同的

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

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

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


    由于RF为3,写入和读取CL分别为2和1,所以集群可以允许一个副本用于写入,两个副本用于读取操作。我希望这对您有所帮助。

    您的问题有点不清楚,因为我认为您没有正确构造该问题。但我将尝试解释一些有助于您理解我的问题的要点t

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

  • 节点数不是读/写失败的计数因子。RF(复制因子)和CL(一致性级别)是读/写失败的决定因子(如果需要的副本或节点停机)
  • RF->将保留多少数据副本(行)(有多少服务器或节点将保留相同的行/数据)

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

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

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

    场景1:

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