我們在讀取和寫入仲裁時遇到了使用Hector和Cassandra的一致性問題。Cassandra中的數據與法定配置不一致
我使用MultigetSubSliceQuery來查詢超級列限制大小爲100的行,然後讀取它,然後將其刪除。並從另一個角度開始。
我發現應該從我的在先查詢中刪除的行仍然顯示在下一個查詢中。
同樣來自一個正常的Column Family,我將status列中的一列的值更新爲status ='TRUE',下一次查詢時狀態仍然爲'FALSE'。
的更多細節:
- 它每一次(1/10,000)
- 兩個查詢之間的時間是大約500毫秒沒有發生不(但我們發現查詢中的一個對在其中2秒已經過去了,仍然表明存在一致性問題)
- 我們使用ntp作爲我們的集羣時間同步解決方案。
- 我們有6個節點,複製因子爲3
據我所知,卡桑德拉應該是「最終一致」了,裏面卡桑德拉寫之前讀可能不會發生。但是兩秒鐘?!如果是這樣,那麼擁有Quorum或其他一致性級別配置是否沒有意義?因此,首先,它是卡桑德拉的正確行爲,如果不是,我們需要分析哪些數據用於進一步的投資?
的細節/讀取所有,問題解決了,所以它應該是卡桑德拉無法合併數據時,才發現「彙總不匹配」,從寫/讀定額寫開關後,但它並不是所有的「文摘不匹配」都失敗了。真的很奇怪,Cassandra版本是1.0.3 –