国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解Redis主從復制和哨兵機制

汽車玩家 ? 來源:簡書 ? 作者:GGarrett ? 2020-05-03 18:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. Redis主從復制

1.1 Redis主從復制

詳解Redis主從復制和哨兵機制

Redis主從復制主要有兩個角色,主機(master)對外提供讀寫功能,從機(slave)對外只提供讀功能,主機定期把數據同步到從機上保證數據一致性。

Redis主機數據同步到從機上有兩種方式,一種是全量同步,另一種是增量同步。

主從復制不會阻塞master,在數據同步時,master還可以繼續處理客戶端請求,因為redis會產生一個新的進程來解決同步問題。

一個redis也可以是從也可以是主(樹狀主從),可以減輕主機壓力。

1.2 Redis主從配置

只需要修改從服務器上的redis.conf文件:

# slaveof 《masterip》 《masterport》

# 表示當前【從服務器】對應的【主服務器】的IP是192.168.10.135,端口是6379。

slaveof 192.168.10.135 6379

啟動主服務器 redis-server redis.conf

進入從服務器文件夾,啟動從服務器

查看主服務器信息:redis-cli -p 6379 info Replication,可以看到有幾個從服務器

1.3 實現原理

redis的主從同步分為兩種,分為全量同步和增量同步。

只有從機第一次連接上主機是全量同步。

斷線重連很有可能觸發全量同步也有可能是增量同步(master判斷runid`是否一致)。

runid

每個redis服務器,不論主服務器還是從服務,都會有自己的運行id。PSYNC runid 這個命令,runid是指上一次復制主服務器的運行id,如果沒有保存這個id,PSYNC的命令會使用”PSYNC ? -1” 這種形式發送給Master,請求主服務器進行全量復制。

offset(復制偏移量)

主服務器和從服務器會分別維護一個復制偏移量,主服務器每次向從服務器傳播N個字節的數據時,就將自己的復制偏移量的值加上N,從服務器每次收到主服務器傳播來的N個字節的數據時,就將自己的復制偏移量值加上N。

詳解Redis主從復制和哨兵機制

復制積壓緩沖區

復制積壓緩沖區是由主服務器維護一個固定長度(fixed-size)先進先出(FIFO)隊列,默認大小是1MB。它主要的作用就是當主服務器進行命令傳播時,不僅將命令發送給所有從服務器,還會將命令入隊到復制積壓緩沖區。如果主服務器向從服務器傳播數據時發生斷線,主服務器會將復制積壓緩沖區偏移量的所有數據都發送給從服務器(發送的是斷線之后的的數據)。

詳解Redis主從復制和哨兵機制

PSYNC執行過程

1.Slave接受從客戶端發送過來的SLAVEOF命令。

當前服務器判斷自己是否保存Master runid是否是第一次復制。

如果是第一次復制那么當前服務器向Master發送PSYNC ? -1命令,主動請求Master進行全量同步。

如果已經父之過Master,那么當前從服務器向Master發送PSYNC runid offset命令。

Master接收到PSYNC 命令后首先判斷runid是否和本機的id一致,如果runid和本機id不一致則返回+FULLRESYNC runid offset命令執行全量同步操作,當前服務器會將runid保存起來,在下次發送PSUNC時使用。

如果判斷runid和本機id一致,Master則會再次判斷offset偏移量和本機的偏移量相差有沒有超過復制積壓緩沖區大小,如果沒有那么就給Slave發送CONTINUE,此時Slave只需要等待Master傳回失去連接期間丟失的命令;

全量同步

Redis的全量同步主要分為三個階段:

同步快照階段:Master創建并發送快照給Slave,Slave再入快照并解析。Master同時將此階段產生的新的命令寫入到積壓緩沖區中。

同步寫緩沖階段:Master向Slave同步存儲在緩沖區的寫操作命令。

同步增量階段:Master向SLave同步寫操作命令。

增量同步

Redis增量同步主要是指Slave完成初始化開始正常工作時,Master發生的寫操作同步到Slave的過程。

通常情況下,Master沒執行一個寫命令就會想Slave發送相同的寫命令,然后Slave接受并執行。

2. 哨兵(sentinel)機制

2.1 哨兵機制介紹

sentinel進程是用于監控Redis集群中Master主服務器工作的狀態。

在Master主服務器發生故障的時候,可以實現Master和Slave服務器的切換,保證系統的高可用。

2.2 為什么要有哨兵機制?

Redis主從復制的缺點:沒有辦法對master進行動態選舉,需要使用Sentinel機制完成動態選舉。

2.3 哨兵的作用

監控(Monitoring):sentinel會不斷檢查Master和Slave是否運行正常。

提醒(Notification):當被監控的某個Redis節點出現問題時, sentinel 可以通過 API向管理員或者其他應用程序發送通知。

自動故障轉移(Automatic failover):當Master不能正常操作時哨兵會開始一次故障轉移。 它會將失效的Master的其中一個Slave升級為新的Master,并讓其他Slave改為復制新的Master。 當客戶端試圖連接失效的Master時,集群會向客戶端顯示新的Master的地址。 Master和Slave切換后,Master的redis.conf、Slave的reids.conf和senisentinel的sentinel.conf配置文件的內容都會相應的改變,即,Master主服務器的redis.conf配置文件中會多一行slaveof的配置,sentinel.conf的監控目標會隨之調換。

2.4 故障判斷原理分析

每個sentinel進程每秒鐘一次的頻率向整個集群中Master、Slave以及其它Sentinel進程發送一個PING命令。

如果一個實例(instance)距離最后一次有效回復PING命令超過down-after-milliseconds選項所指定的值,這個實例會被sentinel進程標記為主觀下線(SDOWN)。

如果一個Master主服務器被標記為主觀下線(SDOWN),則正在監視這個Master主服務器的所有 Sentinel進程要以每秒一次的頻率確認Master主服務器的確進入了主觀下線狀態。

當有足夠數量的 Sentinel進程(大于等于配置文件指定的值)在指定的時間范圍內確認Master主服務器進入了主觀下線狀態(SDOWN), 則Master主服務器會被標記為客觀下線(ODOWN)。

在一般情況下, 每個 Sentinel進程會以每 10 秒一次的頻率向集群中的所有Master主服務器、Slave從服務器發送 INFO 命令。

當Master主服務器被 Sentinel進程標記為客觀下線(ODOWN)時,Sentinel進程向下線的 Master主服務器的所有 Slave從服務器發送 INFO 命令的頻率會從 10 秒一次改為每秒一次。

若沒有足夠數量的 Sentinel進程同意 Master主服務器下線, Master主服務器的客觀下線狀態就會被移除。若 Master主服務器重新向 Sentinel進程發送 PING 命令返回有效回復,Master主服務器的主觀下線狀態就會被移除。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    14

    文章

    10253

    瀏覽量

    91502
  • Redis
    +關注

    關注

    0

    文章

    392

    瀏覽量

    12187
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Redis哨兵模式的自動故障檢測與主從切換實戰

    Redis 主從復制解決了讀擴展和數據冗余問題,但主節點故障時需要人工介入切換,這在生產環境中是不可接受的。Sentinel(哨兵)模式在主從架構之上增加了自動故障檢測和故障轉移能力,
    的頭像 發表于 02-27 11:05 ?132次閱讀

    Redis內存管理、持久化策略與慢查詢排查分析

    Redis 在生產環境中承擔著緩存、會話存儲、消息隊列、分布式鎖等多種角色。隨著數據量增長和并發壓力上升,內存碎片、持久化 I/O 抖動、慢查詢堆積這三類問題會逐漸顯現,直接影響服務延遲和穩定性。Redis 8.x 在內存管理和持久化
    的頭像 發表于 02-27 11:00 ?139次閱讀

    燒錄芯片與IC復制是一回事嗎?深度解析芯片燒錄原理

    本文明確區分了“芯片燒錄”與“IC復制”的本質差異。燒錄是為芯片寫入程序的合法生產步驟,核心是通過物理高壓將數據寫入芯片存儲單元。而IC復制則是未經授權的逆向破解與克隆行為。文章著重解釋了現代芯片
    的頭像 發表于 01-06 13:12 ?346次閱讀

    GNSS位移監測站:地質安全的“毫米級哨兵

    GNSS位移監測站:地質安全的“毫米級哨兵”柏峰【BF-GNSS】在地質災害預警、大型工程安全監測、地殼形變研究等領域,GNSS位移監測站憑借全天候、高精度、自動化的特性,實現對地表及結構體微小位移的實時捕捉,
    的頭像 發表于 10-23 15:48 ?415次閱讀
    GNSS位移監測站:地質安全的“毫米級<b class='flag-5'>哨兵</b>”

    教程來啦!LuatOS中的消息通信機制詳解及其應用場景

    在資源受限的嵌入式環境中,LuatOS采用消息機制實現模塊間解耦與高效通信。通過預定義消息名稱(如“new_msg”),開發者可輕松構建響應式程序結構。接下來我們將深入剖析其實現原理與典型使用方法
    的頭像 發表于 09-26 18:59 ?428次閱讀
    教程來啦!LuatOS中的消息通信<b class='flag-5'>機制</b><b class='flag-5'>詳解</b>及其應用場景

    深度剖析Redis的兩大持久化機制

    凌晨3點,我被一通緊急電話驚醒。線上Redis集群崩潰,6GB的緩存數據全部丟失,導致MySQL瞬間承壓暴增,整個交易系統陷入癱瘓。事后復盤發現,問題的根源竟是一個被忽視的持久化配置細節。
    的頭像 發表于 09-17 16:22 ?559次閱讀

    鐵路氣象監測站:鐵軌旁的 “安全哨兵

    鐵路氣象監測站:鐵軌旁的 “安全哨兵” 柏峰【BF-QX】鐵路運輸對氣象條件格外敏感 —— 強風可能吹偏列車、暴雨易引發線路滑坡、冬季覆冰會導致接觸網斷電,每一種突發天氣都可能威脅行車安全。
    的頭像 發表于 08-27 14:57 ?682次閱讀
    鐵路氣象監測站:鐵軌旁的 “安全<b class='flag-5'>哨兵</b>”

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過數據分片和主從復制實現高可用性和橫向擴展。集群將整個數據集分割成16384個哈希槽(hash slots),每個節點負責一部分槽位。
    的頭像 發表于 07-17 11:04 ?994次閱讀

    Redis集群部署與性能優化實戰

    Redis作為高性能的內存數據庫,在現代互聯網架構中扮演著關鍵角色。作為運維工程師,掌握Redis的部署、配置和優化技能至關重要。本文將從實戰角度出發,詳細介紹Redis集群的搭建、性能優化以及監控運維的核心技術。
    的頭像 發表于 07-08 17:56 ?859次閱讀

    【經驗分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運行Redis性能測試,并
    的頭像 發表于 06-05 08:05 ?982次閱讀
    【經驗分享】在Omni3576上編譯<b class='flag-5'>Redis</b>-8.0.2源碼,并安裝及性能測試

    【幸狐Omni3576邊緣計算套件試用體驗】Redis最新8.0.2版本源碼安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運行Redis性能測試,并
    發表于 06-03 01:28

    利用dockerfile搭建mysql主從集群和redis集群

    ==MySQL主從同步(Replication)是一種實現數據冗余和高可用性的技術,通過將主數據庫(Master)的變更操作同步到一個或多個從數據庫(Slave),實現數據的實時或準實時復制==。
    的頭像 發表于 05-14 11:38 ?2058次閱讀
    利用dockerfile搭建mysql<b class='flag-5'>主從</b>集群和<b class='flag-5'>redis</b>集群

    Redis 再次開源!

    “ ?Redis 現已采用 AGPLv3 開源許可證。? ” Redis CEO 的 Blog 以下是 Redis CEO Rowan Trollope 的 Blog: 像 AWS 和 GCP 這樣
    的頭像 發表于 05-06 18:26 ?934次閱讀

    一文詳解MCP傳輸機制

    MCP 傳輸機制(Transport)是 MCP 客戶端與 MCP 服務器通信的一個橋梁,定義了客戶端與服務器通信的細節,幫助客戶端和服務器交換消息。
    的頭像 發表于 04-14 14:03 ?3811次閱讀
    一文<b class='flag-5'>詳解</b>MCP傳輸<b class='flag-5'>機制</b>

    redis三種集群方案詳解

    Redis中提供的集群方案總共有三種(一般一個redis節點不超過10G內存)。
    的頭像 發表于 03-31 10:46 ?1536次閱讀
    <b class='flag-5'>redis</b>三種集群方案<b class='flag-5'>詳解</b>