欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis高可用-主從復(fù)制、哨兵模式與集群模式詳解

 更新時間:2025年05月09日 10:56:51   作者:世紀(jì)擺渡人  
這篇文章主要介紹了Redis高可用-主從復(fù)制、哨兵模式與集群模式的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Redis高可用-主從復(fù)制、哨兵模式與集群模式

概要

Redis作為一款內(nèi)存數(shù)據(jù)庫,憑借其極高的性能和豐富的功能,已經(jīng)成為了很多互聯(lián)網(wǎng)應(yīng)用的核心組件。然而,單機(jī)Redis雖然性能卓越,但存在著單點故障、擴(kuò)展性差等問題,限制了它在高可用性和高擴(kuò)展性方面的應(yīng)用。

為了提升Redis的可用性和擴(kuò)展性,Redis提供了多種架構(gòu)模式:主從復(fù)制、哨兵模式和集群模式。每種模式都在不同的場景中發(fā)揮著重要作用。

一、主從復(fù)制(Master-Slave Replication)

1、概述

Redis的主從復(fù)制(Master-Slave Replication)是最基礎(chǔ)的高可用架構(gòu)之一。

在這種架構(gòu)中,Redis部署了一個主節(jié)點和多個從節(jié)點。

主節(jié)點負(fù)責(zé)處理所有的寫操作(如SET、DEL等),而從節(jié)點則通過同步主節(jié)點的數(shù)據(jù)來進(jìn)行數(shù)據(jù)備份和提供讀操作服務(wù)。

2、工作原理

  • 主節(jié)點(Master)是數(shù)據(jù)的來源節(jié)點,所有寫操作都首先執(zhí)行在主節(jié)點上。
  • 從節(jié)點(Slave)通過復(fù)制主節(jié)點的數(shù)據(jù)來保證數(shù)據(jù)一致性。從節(jié)點定期從主節(jié)點獲取數(shù)據(jù)的快照(RDB)或增量數(shù)據(jù)(AOF)進(jìn)行同步。
  • 同步方式 從節(jié)點與主節(jié)點之間的同步分為全量同步和增量同步。在第一次連接時,執(zhí)行全量同步,將主節(jié)點的數(shù)據(jù)完整復(fù)制到從節(jié)點;后續(xù)的增量同步則只同步主節(jié)點上的變更數(shù)據(jù)。

3、優(yōu)缺點

優(yōu)點

  • 讀寫分離:主從復(fù)制可以將讀請求分配到從節(jié)點,從而減輕主節(jié)點的壓力,提高系統(tǒng)的并發(fā)能力。
  • 數(shù)據(jù)冗余:從節(jié)點提供了數(shù)據(jù)的備份,增強(qiáng)了系統(tǒng)的容錯性。

缺點

  • 單點故障:主節(jié)點故障后,系統(tǒng)會面臨數(shù)據(jù)不可用的情況。雖然從節(jié)點可以恢復(fù)數(shù)據(jù),但需要手動將從節(jié)點提升為主節(jié)點。
  • 同步延遲:主從同步可能存在延遲,尤其是在寫操作頻繁時,從節(jié)點的數(shù)據(jù)同步可能會滯后,導(dǎo)致讀請求不一致。

4、適用場景

主從復(fù)制適用于讀操作遠(yuǎn)大于寫操作的場景,比如緩存系統(tǒng)、日志系統(tǒng)等。

在這些場景下,可以將從節(jié)點作為讀副本,減少主節(jié)點的壓力,提高讀取性能。

5、配置步驟

5.1 配置主節(jié)點

在Redis中,主節(jié)點默認(rèn)配置就可以作為主節(jié)點工作,因此啟動主節(jié)點非常簡單。

# 啟動主節(jié)點
redis-server /etc/redis/redis.conf
5.2 配置從節(jié)點

從節(jié)點的配置稍微復(fù)雜一些,主要是需要告訴Redis自己是一個從節(jié)點,并指定要復(fù)制的主節(jié)點信息。

在從節(jié)點的redis.conf配置文件中添加以下內(nèi)容:

# 配置從節(jié)點,指定主節(jié)點
slaveof 192.168.1.1 6379

這里的192.168.1.1是主節(jié)點的IP地址,6379是主節(jié)點的端口。通過這行配置,從節(jié)點會自動與主節(jié)點建立連接,開始同步數(shù)據(jù)。

配置好從節(jié)點后,啟動從節(jié)點:

# 啟動從節(jié)點
redis-server /etc/redis/redis.conf
5.3 驗證主從復(fù)制

在主節(jié)點上執(zhí)行INFO replication命令查看復(fù)制狀態(tài):

127.0.0.1:6379> INFO replication
# 輸出:
# role:master
# connected_slaves:1
# slave0:ip=192.168.1.2,port=6379,state=online,offset=12345,lag=0

在從節(jié)點上執(zhí)行相同的命令,查看從節(jié)點的狀態(tài):

127.0.0.1:6380> INFO replication
# 輸出:
# role:slave
# master_host:192.168.1.1
# master_port:6379
# master_link_status:up

二、哨兵模式(Sentinel)

1、概述

為了彌補(bǔ)主從復(fù)制的單點故障問題,Redis引入了哨兵模式。Redis哨兵是一個高可用解決方案,通過自動故障轉(zhuǎn)移和主從監(jiān)控來保證Redis集群的高可用性。

在哨兵模式下,除了主節(jié)點和從節(jié)點外,還需要部署多個哨兵節(jié)點(Sentinel)。哨兵節(jié)點的主要職責(zé)包括:

  • 監(jiān)控主節(jié)點和從節(jié)點的健康狀態(tài)。
  • 當(dāng)主節(jié)點宕機(jī)時,自動進(jìn)行故障轉(zhuǎn)移,將某個從節(jié)點提升為主節(jié)點。
  • 在故障恢復(fù)后,更新主從關(guān)系,重新配置從節(jié)點。
  • 提供服務(wù)發(fā)現(xiàn)功能,客戶端可以通過哨兵獲取到當(dāng)前的主節(jié)點信息。

2、工作原理

  • 監(jiān)控:哨兵節(jié)點周期性地向主節(jié)點和從節(jié)點發(fā)送PING請求,監(jiān)測節(jié)點的健康狀態(tài)。
  • 故障轉(zhuǎn)移:當(dāng)多個哨兵節(jié)點確認(rèn)主節(jié)點不可用時,哨兵將自動選舉一個從節(jié)點并將其提升為新的主節(jié)點。之后,新的主節(jié)點會開始接收寫操作,其他從節(jié)點會開始同步新的主節(jié)點數(shù)據(jù)。
  • 配置更新:哨兵節(jié)點會向所有從節(jié)點廣播新的主節(jié)點信息,從節(jié)點會自動向新的主節(jié)點同步數(shù)據(jù)。

3、優(yōu)缺點

優(yōu)點

  • 自動故障轉(zhuǎn)移:當(dāng)主節(jié)點發(fā)生故障時,哨兵會自動檢測并將一個從節(jié)點提升為主節(jié)點,無需人工干預(yù),保證了系統(tǒng)的高可用性。
  • 高可用性:多個哨兵節(jié)點提供了高可靠性,避免了單個哨兵故障導(dǎo)致的影響。
  • 服務(wù)發(fā)現(xiàn):哨兵能夠動態(tài)地向客戶端提供當(dāng)前的主節(jié)點信息,確??蛻舳丝偸窃L問到最新的主節(jié)點。

缺點

  • 復(fù)雜性高:哨兵模式相比單純的主從復(fù)制更加復(fù)雜,配置和運維難度較大。
  • 故障恢復(fù)時間較長:雖然哨兵能夠自動故障轉(zhuǎn)移,但在發(fā)生故障時,故障轉(zhuǎn)移的過程仍然會有一定的延遲,導(dǎo)致短時間內(nèi)系統(tǒng)不可用。

4、適用場景

哨兵模式適用于對高可用性有較高要求的場景,比如實時業(yè)務(wù)系統(tǒng)、在線服務(wù)等。

它能保證Redis集群在主節(jié)點故障時依然能夠提供穩(wěn)定的服務(wù)。

5、配置步驟

5.1 配置哨兵文件

哨兵的配置通常在sentinel.conf文件中進(jìn)行。在文件中需要指定要監(jiān)控的主節(jié)點,設(shè)置監(jiān)控參數(shù)等。

以下是一個簡單的sentinel.conf配置文件示例:

# sentinel.conf
port 26379
sentinel monitor mymaster 192.168.1.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
  • sentinel monitor mymaster <master_ip> <master_port> :監(jiān)控名為mymaster的主節(jié)點,IP為192.168.1.1,端口為6379,需要至少2個哨兵確認(rèn)主節(jié)點故障。
  • sentinel down-after-milliseconds mymaster 5000:主節(jié)點在5000毫秒內(nèi)未響應(yīng)時判定為故障。
  • sentinel failover-timeout mymaster 60000:故障轉(zhuǎn)移的超時時間為60秒。

啟動哨兵

啟動哨兵時,執(zhí)行以下命令:

redis-sentinel /etc/redis/sentinel.conf
5.2 驗證哨兵模式

可以通過以下命令查看哨兵的狀態(tài):

127.0.0.1:26379> INFO sentinel
# 輸出:
# sentinel_masters
# name=mymaster
# ip=192.168.1.1
# port=6379
# quorum=2
# status=ok

三、集群模式(Cluster)

1、概述

對于需要大規(guī)模分布式部署水平擴(kuò)展的應(yīng)用,Redis提供了集群模式(Redis Cluster)。與主從復(fù)制和哨兵模式不同,Redis集群采用了分片的方式將數(shù)據(jù)分布到多個節(jié)點上,從而支持更高的數(shù)據(jù)存儲能力和更強(qiáng)的擴(kuò)展性。

Redis集群中,數(shù)據(jù)會按照**哈希槽(hash slots)**的方式進(jìn)行分配。Redis集群總共有16384個哈希槽,集群中的每個節(jié)點負(fù)責(zé)一部分哈希槽。數(shù)據(jù)的分配和管理是自動完成的,客戶端可以直接連接到集群中的任何節(jié)點,集群會根據(jù)請求的數(shù)據(jù)哈希值將請求路由到正確的節(jié)點。

2、工作原理

  • 分片:Redis Cluster將所有的鍵值對按哈希算法分成16384個哈希槽,并將這些哈希槽分配到多個節(jié)點上。每個節(jié)點存儲一部分?jǐn)?shù)據(jù),并負(fù)責(zé)該哈希槽范圍內(nèi)的鍵。
  • 數(shù)據(jù)復(fù)制:每個主節(jié)點都有一個或多個從節(jié)點進(jìn)行數(shù)據(jù)備份,從節(jié)點可以在主節(jié)點故障時接管。
  • 故障轉(zhuǎn)移:當(dāng)主節(jié)點故障時,集群會自動將該主節(jié)點的從節(jié)點提升為新的主節(jié)點,確保數(shù)據(jù)的可用性。

3、優(yōu)缺點

優(yōu)點

  • 高擴(kuò)展性:集群模式支持水平擴(kuò)展,可以根據(jù)需要動態(tài)增加或減少節(jié)點,輕松處理海量數(shù)據(jù)。
  • 自動故障轉(zhuǎn)移:Redis集群提供了自動故障轉(zhuǎn)移機(jī)制,保證節(jié)點宕機(jī)時系統(tǒng)能夠自動恢復(fù)。
  • 分布式存儲:數(shù)據(jù)被分片存儲在不同的節(jié)點上,可以支持超大規(guī)模的數(shù)據(jù)存儲。

缺點

  • 復(fù)雜性高:與主從復(fù)制和哨兵模式相比,Redis集群的配置和運維復(fù)雜度更高,要求對分片、數(shù)據(jù)遷移、集群管理等有較深入的理解。
  • 跨節(jié)點操作性能差:如果客戶端的操作涉及多個哈希槽,Redis集群需要跨節(jié)點進(jìn)行通信,性能會有所下降。

4、適用場景

集群模式適用于需要大規(guī)模數(shù)據(jù)存儲和高并發(fā)的場景,如社交媒體、電子商務(wù)、廣告投放等場景。

對于需要支持?jǐn)?shù)十億鍵的數(shù)據(jù)存儲和快速讀寫操作,Redis集群是最合適的架構(gòu)模式。

5、配置步驟

5.1 配置集群節(jié)點

在集群模式下,每個Redis節(jié)點的配置文件中需要啟用集群相關(guān)的參數(shù):

# redis.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
  • cluster-enabled yes:啟用集群模式。
  • cluster-config-file nodes.conf:指定集群配置文件,保存集群的節(jié)點信息。
  • cluster-node-timeout 5000:設(shè)置節(jié)點超時時間。
5.2 啟動集群節(jié)點

啟動多個Redis實例,每個實例都要使用上述配置文件。假設(shè)我們有6個節(jié)點(3個主節(jié)點,3個從節(jié)點):

# 啟動每個節(jié)點
redis-server /etc/redis/redis.conf
5.3 創(chuàng)建集群

使用redis-cli工具來創(chuàng)建集群,并為每個主節(jié)點分配從節(jié)點:

# 創(chuàng)建集群
redis-cli --cluster create <node1>:6379 <node2>:6379 <node3>:6379 <node4>:6379 <node5>:6379 <node6>:6379 --cluster-replicas 1

這條命令會創(chuàng)建一個包含3個主節(jié)點和3個從節(jié)點的集群。

5.4 驗證集群狀態(tài)

通過以下命令來驗證集群狀態(tài):

redis-cli -c -h <node_ip> -p 6379 cluster info

總結(jié)

在Redis的高可用架構(gòu)中,主從復(fù)制、哨兵模式集群模式各自有不同的適用場景和優(yōu)勢。選擇合適的架構(gòu)模式,需要根據(jù)業(yè)務(wù)的需求、系統(tǒng)規(guī)模、數(shù)據(jù)量和故障恢復(fù)時間的要求來決定。

  • 主從復(fù)制 適用于讀操作較多,寫操作較少的場景,能夠有效實現(xiàn)讀寫分離,提高系統(tǒng)性能。
  • 哨兵模式 通過自動故障轉(zhuǎn)移和監(jiān)控,保障了Redis系統(tǒng)的高可用性,適用于高可用性要求較高的業(yè)務(wù)場景。
  • 集群模式 提供了水平擴(kuò)展的能力,適用于大規(guī)模數(shù)據(jù)存儲和高并發(fā)請求的場景。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Redis實現(xiàn)延時任務(wù)的解決方案

    使用Redis實現(xiàn)延時任務(wù)的解決方案

    這篇文章主要介紹了使用Redis實現(xiàn)延時任務(wù)的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • k8s部署redis遠(yuǎn)程連接的項目實踐

    k8s部署redis遠(yuǎn)程連接的項目實踐

    本文主要介紹了k8s部署redis遠(yuǎn)程連接的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • muduo源碼分析之TcpServer模塊詳細(xì)介紹

    muduo源碼分析之TcpServer模塊詳細(xì)介紹

    這篇文章主要介紹了muduo源碼分析之TcpServer模塊,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 基于Redis實現(xiàn)抽獎功能及問題小結(jié)

    基于Redis實現(xiàn)抽獎功能及問題小結(jié)

    這篇文章主要介紹了基于Redis實現(xiàn)抽獎功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Redis中Scan命令的基本使用教程

    Redis中Scan命令的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Redis中Scan命令的基本使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Redis 安裝 redistimeseries.so(時間序列數(shù)據(jù)類型)的配置步驟

    Redis 安裝 redistimeseries.so(時間序列數(shù)據(jù)類型)的配置步驟

    這篇文章主要介紹了Redis 安裝 redistimeseries.so(時間序列數(shù)據(jù)類型)詳細(xì)教程,配置步驟需要先下載redistimeseries.so 文件,文中介紹了啟動失敗問題排查,需要的朋友可以參考下
    2024-01-01
  • 基于Redis?zSet實現(xiàn)滑動窗口對短信進(jìn)行防刷限流的問題

    基于Redis?zSet實現(xiàn)滑動窗口對短信進(jìn)行防刷限流的問題

    這篇文章主要介紹了基于Redis?zSet實現(xiàn)滑動窗口對短信進(jìn)行防刷限流,主要針對目前線上短信被腳本惡意盜刷的情況,用Redis實現(xiàn)滑動窗口限流,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-02-02
  • Redis如何批量刪除指定模糊的key舉例

    Redis如何批量刪除指定模糊的key舉例

    在實際項目中,我們可能需要根據(jù)一定的條件來刪除部分key,這時候就需要用到模糊刪除操作這,下面篇文章主要給大家介紹了關(guān)于Redis如何批量刪除指定模糊的key的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 通過prometheus監(jiān)控redis實時運行狀態(tài)的操作方法

    通過prometheus監(jiān)控redis實時運行狀態(tài)的操作方法

    本文詳細(xì)介紹了如何通過Prometheus監(jiān)控Redis的運行狀態(tài),包括安裝配置Redis、Redis Exporter以及Prometheus,配置Prometheus監(jiān)控Redis指標(biāo),以及常見的Redis指標(biāo)和告警規(guī)則,需要的朋友可以參考下
    2025-02-02
  • Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析

    Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析

    這篇文章主要介紹了Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論