Cassandra一致性水平和复制因子

时间:2017-08-05 14:37:30

标签: cassandra cassandra-2.0 data-consistency

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

  1. 我可以安全地假设,如果2/3节点关闭,我仍然可以获得查询的完整数据而不管一致性级别吗?
  2. 将2/3个节点保持为关闭,哪个一致性级别可以确保查询的完整数据?

2 个答案:

答案 0 :(得分: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&lt; = 3
现在假设,我们使用QUORUM进行读操作,使用ONE进行写操作。

    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进行读取。

答案 1 :(得分:0)

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