我正在使用NetworkTopologyStrategy和PropertyFileSnitch在4個DC上測試Cassandra 2.0的部署。每個DC的複製配額爲1,這意味着每個DC都有完整的數據庫。 我的密鑰空間配置爲「一」讀取一致性。意思(據我所知)客戶可以在本地獲得數據,如果沒有執行任何法定人數的話可以獲得數據。卡桑德拉讀一致性,受其他節點影響?
不幸的是,我的測試結果表明否則。如果我人爲地(使用MiniNet)增加其中一個DC的延遲,我可以看到我在其他DC上的讀取速度顯着減慢(與延遲成比例,超過dynamic_snitch_badness_threshold)。
在此測試過程中,我不寫任何數據,我只是在執行閱讀。請注意,如果我完全斷開其中一個節點,我可以將性能恢復到100%。
因此我有2個問題,1.爲什麼一個DC會降低整個系統的性能,當我執行一致性讀取時。和2.爲什麼動態snytch不會將通信重新路由到性能不佳的節點(默認設置,測試時間超過20分鐘)。
問候。
編輯: 所以這是我迄今爲止的一系列行動。 當我創建表時,我添加了這個:read_repair_chance = 0和speculative_retry ='NONE';
問題:當我使用cqlsh控制檯時,我可以讀取當前的一致性級別,並且可以根據文檔設置LOCAL_ONE。但新的設置不是持久的,當我退出cqlsh並再次輸入時,我可以再次看到默認的一致性ONE。這似乎是每個會話的設置?
我在緩慢的節點上運行nodetool netstat,我發現沒有修復嘗試,但有一些響應?
Mode: NORMAL
Not sending any streams.
Read Repair Statistics:
Attempted: 0<<-----------
Mismatch (Blocking): 0
Mismatch (Background): 0
Pool Name Active Pending Completed
Commands n/a 0 0
Responses n/a 0 3807<<------------
以下是相關的JIRA:https://issues.apache.org/jira/browse/CASSANDRA-7902 –