簡體   English   中英

數據如何在cassandra集群上保持一致

[英]How data will be consistent on cassandra cluster

當我讀到有關cassandra寫入一致性的數據文檔時,我有一個疑問。 我有一個關於cassandra如何在以下場景中保持一致狀態的問題:

  • 寫一致性級別=仲裁
  • 復制因子= 3

根據文檔,當發生寫入時,協調器節點會將此寫入請求發送到集群中的所有副本。 如果一個副本成功而另一個副本失敗,則協調器節點將向客戶端發送錯誤響應,但node-1成功寫入數據並且不會回滾。

在這種情況下,

讀取修復(或提示切換或nodetool修復)是否會將不一致的數據從node-1復制到node-2和node-3?

如果不是,cassandra將如何處理不將不一致的數據復制到其他副本?

你能澄清我的問題嗎?

您是完全正確的,讀取修復或其他方法將更新node-2和node-3。 這意味着即使失敗的寫入最終也會更新其他節點(如果至少有一個成功)。 Cassandra沒有像關系數據庫那樣的回滾。

我沒有看到有任何錯誤 - 系統執行你告訴它的操作,即兩個覆蓋一個,並且由於錯誤消息作為“失敗”發送回客戶端,那么最終狀態應該是“失敗”讀取修理工具。

Cassandra Coordinator節點在其存儲中維護失敗的副本數據,它將定期重試(3次左右),如果成功,則會發送最新數據,否則會截斷其存儲中的數據。

在任何讀取查詢的情況下,Coordinator節點將請求發送到所有副本節點,並且它將比較來自所有副本節點的結果。 如果其中一個副本節點未發送最新數據,則它將向該節點發送讀取修復命令,以使節點保持同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM