1. 程式人生 > 實用技巧 >【轉載】500行Python程式碼實現的Git客戶端

【轉載】500行Python程式碼實現的Git客戶端

Redis 主從複製

目錄

1. 概述

  • 資料的複製都是單向的, 只能由主節點到從節點, Master 以寫為主, Slave 以讀為主
  • 主從複製, 讀寫分離, 主要是解決讀的問題 ==> 80% 的情況下都是在進行讀操作! 減緩伺服器的壓力! 架構中經常使用! 一主二從
  • 預設情況下, 每臺Redis伺服器都是主節點

2. 環境配置

只配置從庫, 不用配置主庫

  • info replication ====> 檢視當前庫的資訊

  • 複製三個配置檔案, 然後修改對應的資訊

    • 埠號
    • 檔案的pid
    • log檔案
    • 持久化的檔名
  • 開啟服務, 看到生成了對應的log檔案, 說明該服務已經成功啟動了!

  • 檢視我們開啟的redis服務

3. 一主二從搭建

  • 我們一般情況下, 只用配置從機就好了!

  • 認老大, 一主(79)二從(80,81)

  • 從機配置 ====> slaveof host port

  • 主機的資訊

  • 真實的主從配置應該在配置檔案中配置, 這樣的話就是永久的!, 在配置檔案中的replication下配置replicaof

4. 細節

  • 主機可以寫, 從機不能寫, 只能讀

  • 主機中的所有資訊和資料, 都會自動被從機儲存

  • 主機斷開連線, 從機依舊連線到主機, 但是沒有些操作了. 如果主機回來了, 從機依舊可以直接獲取到主機寫的資訊

  • 如果是是用命令列來配置的主從, 這個時候, 如果重啟了, 就會變回主機

  • 只要變回從機, 立馬就會從主機中獲取值!

  • *命令 slaveof no one ====> 使自己成為主機, 其他的節點就可以手動連線到這個最新的主節點*

5. 哨兵模式

  • 自動選取老大的模式!

  • Redis從2.8開始正式提供了 Sentinel (哨兵) 架構來解決這個問題

  • 哨兵是一個獨立的程序, 他會獨立執行, 其原理是 哨兵通過傳送命令, 等待 Redis 伺服器響應, 從而監控執行的多個Redis例項

  • 我們可以使用多哨兵模式, 哨兵之間也會進行監控

1. 測試

  • 我們目前的狀態是一主二從

  • 配置哨兵配置檔案

    • 新建 sentinel.conf 檔案

    • 在配置檔案中寫如下配置 (這是最核心的配置)

    • #sentinel monitor myredis 被監控的名稱 127.0.0.1 主機的ip地址 6379  主機的埠 1
      sentinel monitor myredis 127.0.0.1 6379 1
      
    • 後面的這個數字 1 代表主機掛了之後, slave 投票看讓誰接替成為主機, 票數最多的, 就會成為主機

  • 啟動哨兵

    • redis-sentinel 配置檔案的路徑
  • 如果主節點掛了, 哨兵過一會可以發現, 並投票選出新的主節點

  • 主節點回來之後, 只能作為從機

2. 優缺點

  • 優點
    • 哨兵叢集, 基於主從複製模式, 所有的主從配置的優點, 他全有
    • 主從可以切換, 故障可以轉移, 系統的可用性就會更好
    • 哨兵模式就是主從模式的升級, 手動到自動, 更加健壯
  • 缺點
    • Redis不好線上擴容, 叢集容量一旦到達上限, 線上擴容就十分麻煩
    • 實現哨兵模式的配置其實是很麻煩的, 裡面有很多選擇!