2017-01-28 164 views
0

假設:RF = 3卡桑德拉差異

在互聯網上關於一致性水平揚聲器上的一些視頻說,CL = ONE是更好然後CL = ANY,因爲當我們使用CL = ANY協調會很高興僅存儲提示(和數據)(我們假設所有其他節點都具有相應的分區鍵範圍),並且由於協調器的失敗,我們可能會丟失數據。但是稍等一會....按照我的理解,如果我們使用CL = ONE,並且例如我們只有一個(有三個)可用節點用於此分區鍵,那麼我們將只有一個節點插入數據。損失的風險是相同的。

但我認爲我們應該假設平等的情況 - 特定標記的所有節點都消失了。那麼最好放棄寫操作,然後寫下這樣一個協調失敗的巨大風險。

回答

3

CL = ANY可能永遠不應該用在生產服務器上。在提示寫入擁有該分區的節點之前,寫入將不可用,因爲當它在提示日誌中時無法讀取數據。

在兩個節點向下的情況下使用CL = ONE和RF = 3,您將在a)節點上的提交日誌和memtable以及b)提示日誌中存儲數據。這些可能是不同的節點,但它們可能是相同的1/3。所以,是的,在CL = ONE和CL = ANY的情況下,您可能會因單節點故障而導致數據完全丟失。

而不是ANY或ONE,使用CL = QUORUM或CL = LOCAL_QUORUM。

+0

謝謝你,簡短的問題和我的問題!我知道如何獲得強大的一致性....和可用的選項。強一致性的公式是'CL for read + CL for write> RF'。我只是想弄清楚任何和一個案件的概率,你們幫我解決這個問題。 – Deil

0

事情是提示將被存儲3小時默認情況下和更長的時間比你必須運行修復。如果您在集羣中某個節點上至少有一個此數據的副本(存儲在協調器上的提示不計算在內),則可以進行修復。

一致性一個保證集羣中至少有一個節點將其提交日誌中,無論如何。任何情況在最壞的情況下都存儲在協調器的提示中(其他節點無法訪問它),默認情況下會在3小時的時間內存儲。 3小時過後,如果有其他兩個實例關閉,您將丟失數據。

如果您擔心風險,則使用法定人數,2個節點必須保證保存數據。這取決於應用程序開發人員/設計師的決定。法定人數的寫作時間通常會比One更長。但是,如果負載急劇增加,您總是可以添加更多的節點等。

也有看看這個很好的工具,看看有什麼影響做各種各樣的一致性和複製因素對應用:

https://www.ecyrd.com/cassandracalculator/

隨着RF 3,集羣中的3個節點將實際獲取寫。一致性就是你想等待多長時間的響應......如果你使用One,你將等到一個節點將它提交到提交日誌中。但協調員實際上會將寫入發送到全部3.如果他們沒有響應,協調員會將寫入保存到提示中。

大部分時間任何生產都是一個壞主意。

+0

感謝您的回答,但它似乎是關於一致性級別,存儲提示時間的一般信息。不是直接問我的問題。無論如何感謝鏈接! – Deil