2012-02-24 37 views
4

Cassandra的最後寫入策略基於時間戳,並且這是客戶端時間戳。 客戶端之間的時間可能不同步 - 這可能導致更新丟失。我想確切地知道在流動的情況下會發生什麼:Cassandra - 客戶端時間戳和衝突識別

  • 客戶端的時鐘延遲幾年 - 在這種情況下,列的更新從這個幾乎沒有延遲的客戶端發送一直較舊的時間戳,相比於現有的值時(通過創建「正常」客戶)。卡桑德拉會否忽略這樣的更新?此更新是否會覆蓋現有的列值,並設置較早的時間?
  • 客戶端獲得幾年 - 在這種情況下,如果從另一個「正確的」客戶端執行併發寫請求,此客戶端的更新將始終獲勝 - 是否正確?

回答

3

是的,時間戳用於衝突解決,所以更新的時間戳總是贏。一般建議是在所有機器上運行ntp。

如果由於某種原因NTP是不是一種選擇,你可以設置的時間戳您要在客戶端上看重什麼都,但你必須設計同步是價值的自己的路(NTP獲得工作會幾乎總是更容易)。

+0

舊的時間戳更新將被忽略? – 2012-02-24 19:49:07

+1

如果具有相同名稱和更新時間戳的列已經存在,那麼是的。 – psanford 2012-02-24 21:03:11