2013-08-20 31 views
2

卡桑德拉實施閱讀CL ONE的閱讀方式如何?卡桑德拉 - 閱讀一致性水平ONE

協調員是否查詢所有副本並等待第一個回答?

根據文檔,協調員應該查詢一個最近的副本。如果在此查詢期間發生超時,會發生什麼情況 - 是否嘗試其他副本,或者是否將錯誤返回給客戶端?

回答

3

協調器是否查詢所有副本並等待第一個答案?

正如您所提到的那樣,它會查詢最近的節點,如由告密者所確定的。

如果此查詢過程中出現超時會發生什麼

上有Dynamic Snitch附加文檔,其中指出:

默認情況下,所有告密者也使用動態打小報告層監視器 讀取延遲,並在可能的情況下將請求從 路由到性能不佳的節點。

按照這個定義,如果由告密者選擇的節點應該失敗,告密者應該將事務路由到下一個最近的節點。

注意,由於2.0.2,卡桑德拉有一個叫做Rapid Read Protection功能,其中:

[A] llows卡桑德拉容忍節點故障不會丟失一個請求

+0

你肯定「重排」?我已經檢查過Cassandra 1.6代碼並且它接縫,如果發生節點故障,客戶端將收到錯誤 - 至少在沒有發生讀取修復的情況下。調用ReadCallback#filterEndpoints(...)刪除除最接近的一個以外的所有端點,並且fetchRows(...)等待來自該單個節點的響應,這是全部 - 我找不到任何重試功能。 –

+0

您在代碼中找不到任何重試邏輯的好處。 Cassandra的基於環的設計表明,它可能會丟失一個節點並仍然提供讀取,具體取決於配置的複製因子。但是,由於您詢問事務期間恰好發生的節點故障(最接近的),節點被告密者選中之後,我認爲可能會發生故障。 – Aaron