<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          非常適合新手的redis cluster搭建過程

          共 2998字,需瀏覽 6分鐘

           ·

          2021-06-09 12:19


          Redis集群演進過程

          1. Redis單節(jié)點
          2. 主從復制:
            復制主要實現(xiàn)了數(shù)據(jù)的多機備份,以及對于讀操作的負載均衡和簡單的故障恢復。
            故障恢復無法自動化;寫操作無法負載均衡;存儲能力受到單機的限制。
          3. 哨兵(Sentinel):
            在復制的基礎上,哨兵實現(xiàn)了自動化的故障恢復。
            缺陷是寫操作無法負載均衡;存儲能力受到單機的限制。
          4. Cluster集群:
            通過分片集群,Redis解決了寫操作無法負載均衡,以及存儲能力受到單機限制的問題,而且也具有故障遷移(主從切換)的功能,實現(xiàn)了較為完善的高可用方案。

          科普特性

          請對照上面的架構圖

          • redis cluster不支持單機版本的16個默認數(shù)據(jù)庫,僅有0數(shù)據(jù)庫, select命令被禁用
          • key空間被劃分為16384個哈希槽,每個master節(jié)點負責處理16384個哈希槽的子集
            當集群沒有發(fā)生重配,集群是穩(wěn)定的
          • 每個master都可能有1個或多個slave節(jié)點, 這些節(jié)點將在網(wǎng)絡分區(qū)或者發(fā)生故障時嘗試替代master節(jié)點, 同時這些slave節(jié)點也可用于支撐大規(guī)模的讀操作
          • 將key映射到哈希操作的算法是hash_slot = CRC16(16)mod 16384

          例外:key hash tags:
          {user1000}.following和{user1000}.followers兩個鍵值將被放在一個哈希槽,因為只有子字符串user1000將被用來計算哈希槽。

          • Cluster bus:每個redis節(jié)點都有一個用于集群節(jié)點間通信的tcp端口(在原客戶端訪問端口之上加上1000),
          • 節(jié)點使用gossip協(xié)議和配置更新機制,以避免在正常情況下在節(jié)點之間交換過多的消息,因此交換的消息數(shù)量不是指數(shù)級的
          • redis客戶端可以向集群中每個節(jié)點發(fā)送查詢(包括從節(jié)點),節(jié)點將會分析查詢key,找到負責對應哈希槽的節(jié)點。

          當前節(jié)點能處理最好,不能處理將返回 MOVED error、哈希槽、能處理的節(jié)點,客戶端將自行定向到特定新節(jié)點查詢。

          • 一般情況下slave節(jié)點會將客戶端請求重定向到負責對應哈希槽的master節(jié)點,但是為了支撐大規(guī)模讀,可以給slave節(jié)點開啟 READONLY

          搭建Redis Cluster

          本文使用一個單物理機,搭建偽Redis Cluster(3主3從)

          1. 創(chuàng)建redis-cluster目錄,存放集群
          2. 下載最新版redis-6.2.4, 將bin目錄下的可執(zhí)行文件、redis.conf拷貝到同級目錄redis01
          3. 修改redis01 目錄下redis.conf配置:
            • port 7001
            • cluster-enabled  yes        // 之前被注釋
          4. 將redis01拷貝多個,形成redis02, redis02, redis04, redis05,redis06 ,
            修改對應redis.conf port為7002 7003 7004 7005 7006
          1. 啟動6個redis節(jié)點,使用start.sh腳本( chmod +x start.sh)
             每個啟動命令后面的& 表示后臺啟動
          cd redis01
          ./redis-server redis.conf &
          cd ..
          cd redis02
          ./redis-server redis.conf  &
          cd ..
          cd redis03
          ./redis-server redis.conf  &
          cd ..
          cd redis04
          ./redis-server redis.conf &
          cd ..
          cd redis05
          ./redis-server redis.conf &
          cd ..
          cd redis06
          ./redis-server redis.conf &
          cd ..
          1. 準備組建redis cluster

          redis 5+可以使用redis-cli 特定命令來組建集群;redis3,4使用redis-trib.rb來協(xié)助組建集群。

          使用redis-cli --cluster命令創(chuàng)建由6個節(jié)點組成的redis cluser,其中cluster-replicas 1將為每個master節(jié)點創(chuàng)建slave節(jié)點  (不帶上這個cluster-replicas,會創(chuàng)建了6個master節(jié)點組成的redis cluster).

          redis-cli --cluster create 127.0.0.1:7001 \
          127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005   127.0.0.1:7006 \
          --cluster-replicas 1
          1. 驗證集群狀態(tài)
            使用redis-cli -p 7001 -c登錄節(jié)點
            使用cluster nodes查看節(jié)點狀態(tài)

                以上操作搭建了由3master 3Slave形成的高可用redis cluster
               節(jié)點角色由自動生成的nodes.conf文件維護

          1. 客戶端實操

          如果覺得以上過程很繁瑣,Redis官方提供了另外的工具,在utils目錄create-cluster腳本。

          1. create-cluster start
          2. create-cluster create
            就會創(chuàng)建3 mater 3 slave組成的redis cluster(首節(jié)點端口從30001 開始),這樣前置知識可能沒有按部就班清晰。

          總結

          以上就是Redis Cluster科普級別的知識, 幫助大家快速全面了解Redis Cluster特性, 快速搭建Redis Cluster。
          好記性不如爛筆頭,倒騰一次,記錄一次。


          往期精彩回顧




          【推薦】.NET Core開發(fā)實戰(zhàn)視頻課程 ★★★

          .NET Core實戰(zhàn)項目之CMS 第一章 入門篇-開篇及總體規(guī)劃

          【.NET Core微服務實戰(zhàn)-統(tǒng)一身份認證】開篇及目錄索引

          Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)

          .NET Core中的一個接口多種實現(xiàn)的依賴注入與動態(tài)選擇看這篇就夠了

          10個小技巧助您寫出高性能的ASP.NET Core代碼

          用abp vNext快速開發(fā)Quartz.NET定時任務管理界面

          在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務輕松實現(xiàn)作業(yè)調度

          現(xiàn)身說法:實際業(yè)務出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化

          關于C#異步編程你應該了解的幾點建議

          C#異步編程看這篇就夠了


          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  97xxxxx | A黄色一级片 | 91久久成人 | 日本视频欧美 | 久久原版视频 |