1. 程式人生 > >官網中關於Redis + Sentinel主從切換的一些說明

官網中關於Redis + Sentinel主從切換的一些說明

  在redis官網中關於redis + Sentinel主從切換的一些說明,主從切換會丟失資料,無論用何種持久化方式都無法保證主從資料強一致性。

     在每個Sentinel設定裡,redis資料複製是非同步的,總是會有丟失寫入資料的風險,因為一個確認寫入的資料不能到達新的master。就如上面的設定,有很大的風險,由於客戶端分割槽在老的master裡。如圖所示。

    在這個案例中老的master m1被網路分割槽隔離,從節點R2被選舉為新的master。但是客戶端如C1與老的master在相同的分割槽裡,會繼續往老的master中寫入資料,這些資料將永遠丟失直到分割槽恢復。老的master將重新配置為新master的從節點,丟棄它的原有的資料集。

    這個問題使用redis的複製特效能被緩解,一旦發現不能與設定數量的從節點進行傳輸寫資料,老的master將停止接收寫入資料。

   總的來說,Redis + Sentinel是一個最終一致的系統。

   雖然丟失資料的情況並不常見,但實際中還是有可能發生的,正如官方文件所言,redis並不能保證強一致性。我們在設計和開發的時候要考慮這個問題,在redis快取資料丟失、生成ID重複等問題出現,程式要有相應的處理措施,避免導致程式崩潰或無法使用。

參考:https://redis.io/topics/sentinel