2017-08-05 68 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節點運行,您也可以在讀取時獲得一致的數據

相關問題