2017-08-05 124 views
3

我是Cassandra的新手。 假设我有3个节点,复制因子(RF)密钥空间是3Cassandra一致性级别和复制因子

  1. 我可以有把握地认为,如果2/3节点下来,我仍然得到完整的数据查询,而不管一致性水平?
  2. 将2/3个节点保持关闭状态,哪个一致性级别可以保证查询的完整数据?

回答

2

这取决于您用于写入和读取请求的一致性级别。

For strong consistency: R + W > N  
For eventual consistency: R + W =< N, where  
    - R is the consistency level of read operations  
    - W is the consistency level of write operations  
    - N is the number of replicas 

在我们的照顾R + w^< = 3
现在让我们说,我们已经使用了读操作QUORUM,一个用于写入。

quorum = (sum_of_replication_factors/2) + 1 = (3/2) + 1 = 2  
    read = 1 
    R + W <=3 is satisfied in our case. 

您可以根据需要配置一致性级别,但记住延迟。
您可以了解更多的consistency-handingconsistency-configuration

再回到你的问题,如果只有一个节点正在使用,那么你不会有一个最终一致性。你可以使用ONE来读写,但它会打败目的。假设节点会再次启动,我宁愿使用LOCAL_QUORUM写入,TWO读取。

+0

因此,如果我写入表(RF为3)并且写一致性为1,Cassandra是否复制我的数据? –

+0

是的,因为节点时间到了。你应该阅读这个概念[hinted-handoff](http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_about_hh_c.html)在理解你读/写时会发生什么非常重要有一些节点向下。 – Bigby

0

对于您的情况,由于有3个节点,复制因子也是3,因此每个节点都将拥有所有数据。因此,即使只有1/3节点可用,您仍然可以获取完整的数据。但是,在这种情况下,数据的一致性(即是否获得最新数据)将取决于所使用的写一致性(我假设由于只有1/3节点在运行,因此读一致性为1)。为了获得一致的数据,写入一致性应该为3(使用条件,R + W> N表示强一致性)。只有在这样的情况下,即使只有1/3节点运行,您也可以在读取时获得一致的数据

相关问题