2012-02-13 36 views
3

我對卡桑德拉很新,我不確定我是否正確地理解了一切,所以我希望有人能幫助我。Cassandra:集羣如何處理死亡節點?

這是我的系統:NetworkTopologyStrategy(在相同的所有節點:

  • 卡桑德拉0.8
  • 有3個節點
  • 複製策略的複製因子一個密鑰空間集羣DC)
  • 使用twitter cassandra gem連接到羣集的導軌金屬應用程序[1]
    • 讀一致性:ONE
    • 寫consitency:任何

當一個節點出現故障,我很安靜確信這一點:

  • 我應該能夠如果我使用讀取一致性級別ONE,則從密鑰空間讀取記錄。
  • 我應該能夠寫入與任何

這個寫一致性級別的密鑰空間是什麼,我不明白:

  • 以上succeede的行動,但前提是我手動刪除死節點的令牌
  • 我的集羣不應該像預期的那樣死活節點嗎?這不是cassandra的全部內容:高可用性?

我在gem的代碼中挖了一遍,它看起來好像cassandra集羣告訴gem它可以在dead節點上找到一條記錄(實際上是down)。所以gem失敗並且出現異常,無法連接到死節點。

所以我不知道如果我完全誤解了一些東西,我的cassandra設置是錯誤的,或者如果cassandra紅寶石寶石是問題(我不認爲)。

THX,西蒙

[1] https://github.com/twitter/cassandra

回答

0

是爲你死節點描述集羣應該工作。

我不熟悉ruby或ruby客戶端,但聽起來我更傾向於認爲客戶端正嘗試向死節點發送請求,這會導致「無法連接」類型的異常。如果沒有足夠的節點滿足特定查詢的一致性要求,Cassandra會拋出一個UnavailableException。

ruby​​客戶端在做什麼類型的池,你確定它不是試圖發送查詢到一個關閉的節點?假設ruby客戶端具有某種連接池,在實現節點關閉之前,它可能必須至少看到一個失敗的查詢。

相關問題