我們有一個RF = 2的3節點Cassandra集羣。讀寫一致性設置爲1。我們也使用Vnodes。可以將這些節點標記爲N1,N2和N3。假設N3下降。我的印象是,無論節點何時關閉,其他節點都會存儲提示,並且每當N3出現時,提示就會發送到N3,從而確保數據在副本之間保持一致。但是,當我瀏覽文檔時,我遇到了參數max_hint_window_in_ms
,默認爲3小時。所以,如果一個節點死了超過3個小時,它被認爲是永久死亡,並且沒有提示被存儲。到現在爲止還挺好。理解Cassandra中的指示性切換和數據複製
所以,我現在的理解是,如果一個節點停下來說了10個小時,那麼前3個小時的提示會在它返回時轉移到這個節點,但是這個7小時的寫入會對於這個節點會丟失。此外,如果爲特定的令牌範圍啓動讀取查詢,並且由於此節點也可以爲讀取令牌範圍的請求提供服務,它將返回空值而不是存儲在某個其他節點中的實際數據。我的理解是否正確?那麼,應該做什麼?
這是被測試和行爲是意想不到的?或者,如果情景發生,您是否在尋找預期的行爲?由於您的一致性級別設置爲「1」,因此所有讀取/寫入都應成功(假設吞吐量不大)。 – daniel
我想評估一下,如果我的某個節點發生故障超過3小時(默認值爲max_hint_window_in_ms),那麼行爲將會是什麼。 – Ankush92