[更新]卡桑德拉一致性失敗
前面的語句是非常容易引起誤解,所以我在這裏闡述更多:
我跑了一個測試,通過節儉協議PHP發出查詢和腳本的樣子:
for ($i=0; $i<100; $i++) {
$query = "update ns.table set value='before' where key='key$i';";
// randomly select a node and send query
}
for ($i=0; $i<100; $i++) {
$query = "update ns.table set value='after' where key='key$i';";
// randomly select a node and send query
}
表開始是空的,並且僅能在測試後一定行包含「之後」,而最行「之前」包含值。
整個測試過程中我沒有收到任何錯誤。所以不知怎的,第二個循環中的查詢失敗了。
所有的查詢與一致性級別的所有發送,表有2
我卡桑德拉版本複製的因素是DSE 4.6.3,以及集羣共擁有39個節點。
[UPDATE2]
把一個睡眠(3秒)在兩個環路之間的測試現在可以給我正確的結果,與所有表中的行具有「之後」的值之後。
但這仍然令人困惑,因爲對於一致性級別,我期望所有查詢都是事務性的。不需要睡眠功能。
可能有多種原因造成這種情況發生。你能不能更新你的答案,包括:cassandra版本,正在使用的客戶端(及其版本)和你的應用程序的片段? –
你的查詢是什麼樣的?它是一個範圍查詢?寫完後你確定你的選擇正在執行嗎? –
我也懷疑時鐘同步。 – mshuler