1
我們有2個節點的Cassandra集羣。複製因子爲1,一致性級別爲1.我們不使用複製,因爲我們插入的數據對於每條記錄都非常大。 當在該節點中執行寫操作時,Cassandra如何在節點關閉時作出反應?我們使用Java客戶端的Hector API。我的理解是,Cassandra將執行寫入正在運行的其他節點。cassandra如何在節點執行寫操作並且節點發生故障時作出反應
我們有2個節點的Cassandra集羣。複製因子爲1,一致性級別爲1.我們不使用複製,因爲我們插入的數據對於每條記錄都非常大。 當在該節點中執行寫操作時,Cassandra如何在節點關閉時作出反應?我們使用Java客戶端的Hector API。我的理解是,Cassandra將執行寫入正在運行的其他節點。cassandra如何在節點執行寫操作並且節點發生故障時作出反應
不,使用CL.ONE時,如果插入的數據屬於擊落節點的令牌範圍,則不會執行寫操作。一致性級別定義了多少個副本節點必須響應接受請求。
如果您希望能夠寫入,即使副本節點已關閉,您也需要使用CL.ANY。 ANY會確保協調員爲請求存儲提示。提示存儲在System.Hints表中。複製品再次回來後,所有提示將被處理併發送到即將到來的節點。
編輯
您會收到以下錯誤:
com.datastax.driver.core.exceptions.UnavailableException: Not enough replica available for query at consistency ONE (1 required but only 0 alive)
換句話說,寫請求將在OP描述的情況返回一個錯誤。 – Brandon
謝謝Zerd和Brandon。 Hector API不會引發任何異常,但日誌會顯示有關節點關閉狀態的警告消息。當我關閉節點2時,Hector API拋出異常。我正在使用cassandra 2.0.5版本和hector 1.1版本 –