Cassandra
處理 cassandra 中的讀取衝突?
假設我們有三個節點(簡單副本無分片),即 N1、N2 和 N3,複製因子為 3。
- 由於讀寫請求可以到達任何節點,Say Request 寫入請求(同時更新同一記錄)來往節點 N1。
- 讀取請求來讀取相同的文件並轉到節點 N2。我相信它會返回陳舊的數據,因為寫入尚未復製到 N2 嗎?考慮我沒有調整讀寫問題的預設配置。
- 我相信 step2 中的問題可以通過以下任一選項解決
一種。在同步複製中,有利於強一致性,但不利於性能
灣。調整讀寫一致性,如讀寫一致性中所述
C。在分片的幫助下(如果需要),分片鍵將確保所有讀取和寫入都轉到特定節點的特定分片鍵?
我對第 2 點和第 3 點的理解是否正確?
大部分是的,但有小的修正。如果它們尚未復製到另一個節點,您可以獲得陳舊的數據(複製幾乎同時發生,但由於垃圾收集等原因仍然可能延遲)。您可以通過調整一致性級別來獲得強一致性……
評論是關於第 3c 點的 - Cassandra 的分區被複製到所有被選為特定分區副本的節點 - 驅動程序或協調器節點可以到達其中任何一個,具體取決於多種因素。沒有額外的分片鍵可以路由到特定節點 - 所有副本節點都是平等的。