4

我是卡桑德拉的新手。假设我有 3 个节点,并且密钥空间的复制因子(RF)为 3。

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

2 回答 2

3

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

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 进行读操作,使用 ONE 进行写操作。

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

您可以根据需要配置一致性级别,但请记住延迟。
您可以阅读更多的一致性处理一致性配置

回到您的问题,如果只使用一个节点,那么您将不会获得最终的一致性。您可以将 ONE 用于读取和写入,但它会破坏目的。假设节点将再次启动,我宁愿使用 LOCAL_QUORUM 进行写入,使用两个进行读取。

于 2017-08-05T17:55:49.313 回答
0

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

于 2018-02-12T07:05:47.647 回答