簡體   English   中英

Cassandra Quorum:一致性級別

[英]Cassandra Quorum : Consistency Level

我在Cassandra中有3個DC環,每個DC都有4個節點群集。 因此它的4個節點* 3(DC)= 12個節點。 當我們具有Quorum一致性級別時,我正在測試當某些節點出現故障時Cassandra的行為。 我們在每個數據中心上將復制因子設置為3。 所以我們

Quorum = Floor(Sum of Replication FActor/2) + 1. RF = 3 quorum= 5.

從理論上講,如果我的12個節點群集中有五個節點,那么我應該會讀寫。 因此,我關閉了一個完整的數據中心DC1,並在另一個數據中心(Dc2)中關閉了3個節點。 所以我在DC2中有1個節點,在DC3中整個(4個節點)。 我有5個節點。 從理論上講,這對於我的寫作在仲裁一致性方面取得成功應該是一件好事。 但是,當我跑步時,我得到了

Cassandra.Unavailable Exception: Not enough replica available for query at consistency ONE (5 required but only 4 alive)

但是,我確實有5個節點處於活動狀態。 我在這里想念什么?

QUORUM本身是指同一數據中心的成員。 在您的情況下,DC3具有4。但是您要求QUORUM為5,而DC3無法提供。 這就是為什么存在像ONE和LOCAL_ONE這樣的概念的原因。

我非常確定即使所有DC節點都已啟動,在QUORUM 5上您也會遇到相同的錯誤。

您可以參考: http : //docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html

從我的角度來看,操作應該並且將會失敗。

通過啟動的DC,您可以隨時保證3個副本,即RF 3。

另一個DC中位於上一個的節點大約有60%可以確定另一個副本。

3 +1 = 4。

您要CL 5。

5> 4 =>失敗。

Quorum適用於整個群集,而Local_Quorum適用於單個數據中心。 僅需了解一些基礎知識,cassandra是分布式系統,這意味着數據在您的群集中分布,每個節點擁有一個主范圍,並同時復制其他節點的數據。 這意味着負責存儲數據的節點是唯一為一致性計算的節點。 在您的情況下,5個節點處於活動狀態並不意味着滿足寫入或讀取的仲裁一致性,因為所有節點處於活動狀態的DC肯定會在至少3個節點中保留數據(請記住您的RF為3),但是DC只有1個節點將擁有或沒有您要查詢的數據。

在您的情況下,如果您使用Local_quorum命中所有節點,則DC將獲得正確的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM