Redis 設計與實現 (五)--多機資料庫的實現

來源:互聯網
上載者:User

標籤:從伺服器   第一步   完全   分布   replica   產生   升級   分散式資料庫   slots   

多機資料庫的實現

一、複製

   slaveof  主伺服器ip地址。形成主從關係。

  1、同步  

     從向主伺服器發送sync命令。

     主伺服器收到sync命令執行bgsave,產生rdb檔案,緩衝區同時記錄從現在開始執行的所有命令。

     主伺服器執行完畢bgsave命令,會將rdb檔案發送給從伺服器,從伺服器接收並載入這個rdb檔案,同步給主伺服器狀態

     主伺服器發送緩衝區的命令給從伺服器,從伺服器執行當前命令,保持資料最終一致。 

  2、命令傳播

    第一步同步,類似於初始化。

    後續還需要,主從伺服器即時同步。

    主伺服器將 寫命令同步發送給從伺服器執行。保持主從一致。

  3、斷點續傳

    psync 分為完全同步,部分同步

    (1)複製位移量

      • 主伺服器每次想從伺服器創博N個位元組資料時,同時將自己的複製位移量加N.
      • 從伺服器接收N個位元組資料,同時更新自己的位移量加N.       

    (2)複製積壓緩衝區

      • 主伺服器將緩衝區命令發送給從伺服器,同時更新複製積壓緩衝區,標記命令位元組的位移量。
      • 主伺服器會根據這個積壓位移量,選擇同步命令的方式。              

    (3)同步伺服器ID

        根據ID和儲存的ID對比選擇不同的同步方式。

二、Sentinel

   哨兵策略是redis高可用的解決方案(一個或者多個哨兵執行個體組成的哨兵系統),可以監視多個主伺服器。

   (1)容錯移轉

      • 監測到主伺服器下線,選舉主伺服器下的一個從伺服器升級為主伺服器.
      • 通知其他從伺服器,更新主伺服器地址.
      • 監視下線伺服器,並將下線的伺服器升級為從伺服器.

三、叢集

   叢集實現了分散式資料庫解決方案

  1、節點:cluster meet <ip><port>

    node節點發送上述命令到指定的ip:port節點,它們進行握手,成功後,將指定的ip:port節點添加到node的叢集中。

  2、啟動節點

    一個節點就是一個運行在叢集模式下的redis伺服器,根據cluster-enable來判斷是否開啟叢集模式。

  3、配置槽位:通過分區方式來儲存資料庫中的索引值對,叢集的整個資料庫被分為 0~16384個槽位

    cluster addslots <一個或者多個槽位>

   節點之間互相同步自己的槽位

    資料庫要處理的鍵屬於哪個槽 ->指派當前節點->沒有的話,moved,下一個->直到找到為止

       鍵槽位演算法:cluster keyslot <key>

       4、重新分區

    moved  槽的負責權有一個節點轉移到另一個節點

          ask   槽遷移過程中使用的臨時措施

  5、複製容錯移轉

    叢集分為主節點和從節點,主節點用於處理槽,子節點用於複製主節點   

    在主節點下線時,代替主節點繼續處理命令請求。

    cluster replicate <node-id>  node-id 為主節點,接收此命令的節點為子節點

 

Redis 設計與實現 (五)--多機資料庫的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.