Cassandra
Cassandra 中的仲裁讀取一致性
我是分佈式數據庫的新手,有幾件事我想不通。
我們正在開發一個應用程序,需要選擇正確的數據庫,這個應用程序需要在與使用者相關的財務數據上保持強一致性,例如存款和取款。我想知道Cassandra 中的可調一致性,特別是仲裁級別的一致性。
想像以下場景:
複製因子為3。
使用者John在所有副本上的初始餘額為10 。
在時間t1,John 的餘額發生更新,將其減少到7 (CL=quorum),
同時,在時間t1,讀取操作正在執行,一致性級別設置為quorum ,在這種情況下為2 。
是否可能沒有為仲裁選擇執行*更新查詢的節點上的副本?*如果是這樣,由於沒有寫鎖
而假設操作結果為 10 是否正確? 總的來說,我想知道約翰是否有可能以某種方式利用這一點並花費超過他帳戶的餘額。 謝謝。
read
通過為讀取和寫入請求提供 QUORUM,您可以根據以下等式實現強一致性
R + W > N
,其中R
- 讀取副本計數,W
- 寫入副本計數和N
- 複製因子。如果您使用 QUORUM 寫入,則 2 個節點將獲得新數據,而當您使用 QUORUM 讀取時,一個節點可能有舊數據,而一個節點將有新數據 - Cassandra 將檢測差異並使用最新版本。