Redis 哨兵機制

来源:https://www.cnblogs.com/svenaugustus/archive/2020/05/21/12932600.html

雖然現在使用哨兵+主從的方式比較少了,但通過理解 Redis 哨兵,我們能獲得更深入的分散式的知識。 https://redis.io/topics/sentinel sentinel基本配置 sentinel的作用: 1、監控 2、通知 3、自動故障轉移 (1.投票決策master是否掛了,如果投 ...


雖然現在使用哨兵+主從的方式比較少了,但通過理解 Redis 哨兵,我們能獲得更深入的分散式的知識。

sentinel基本配置

file
sentinel的作用:

  • 1、監控
  • 2、通知
  • 3、自動故障轉移 (1.投票決策master是否掛了,如果投票決策master掛了,2.則進一步決策選出執行故障轉移的leader, 去執行故障轉移)
  • 4、充當client的授權和master查詢服務
sentinel monitor <master-group-name> <ip> <port> <quorum>

quorum 的含義:
(1)表示 sentinel 集群中 quorum 個節點認為 master掛了,那麼就可能觸發自動故障轉移進程。
(2)quorum 僅用於故障檢測,不涉及sentinel 集群的其他投票決策。

sentinel <option_name> <master_name> <option_value>

(1)判斷主master掛機的時間 down-after-milliseconds
master沒有回覆PING或回覆錯誤,這個持續多久了,sentinel節點就可以認為master掛了

(2)在故障轉移後重新配置為使用新Master的副本數 parallel-syncs
此數越小,故障轉移速度越快
但需要註意的是當副本也提供服務的時候,可能存在不一致數據

(3)失敗的超時時間 failover-timeout
failover過期時間,當failover開始後,在此時間內仍然沒有觸發任何failover操作,當前sentinel將會認為此次failoer失敗。

sentinel和其副本的自動發現

file
sentinel和其副本的自動發現,採用了 Pub/Sub發佈訂閱機制實現

  • 1.每個sentinel每2秒往其監視的Redis Master及其副本中發佈頻道 __sentinel__:hello 宣告自己的 ip port runid
  • 2.每個sentinel都訂閱其監視的Redis Master及其副本中的頻道 __sentinel__:hello

@SvenAugustus(https://www.flysium.xyz/)
更多請關註微信公眾號【編程不離宗】,專註於分享伺服器開發與編程相關的技術乾貨:


您的分享是我們最大的動力!

更多相關文章
  • Nginx 處理一個 HTTP 請求的全過程 前面給大家講了 "Nginx 是如何處理 HTTP請求頭部的" ,接下來就到了真正處理 HTTP 請求的階段了。先看下麵這張圖,這張圖是 Nginx 處理 HTTP 請求的示意圖,雖然簡單,但是卻很好的說明瞭整個過程。 1. Read Request H ...
  • 這世界有10種人,一種人懂二進位,另一種人不懂二進位。 ——魯迅 大家好,我是良許。 二進位文件是我們幾乎每天都需要打交道的文件類型,但很少人知道他們的工作原理。這裡所講的二進位文件,是指一些可執行文件,包括你天天要使用的 Linux 命令,也是二進位文件的一種。 Linux 系統給我們提供了非常多 ...
  • 我們知道Windows系統有回收站的功能,正確設置後,當用戶刪除文件或文件夾時,操作系統會將這些“刪除”的文件或文件夾放到回收站中,而並沒有真正意義上的刪除文件。其實Linux系統中也可以模擬這樣的功能。下麵介紹一下GitHub上的一個非常有意思的項目,裡面有個腳本Saferm.sh可以模擬這種功能... ...
  • 常用命令 文件操作 命令 | 說明 | 例子 | | cd | 打開目錄 | cd program pwd | 列出當前路徑名稱 | ls | 列出當前目錄 | ls la 顯示目錄詳細內容 mkdir | 創建目錄 | mkdir dir_name touch file.format | 創建指定 ...
  • 1、首先查看VMware虛擬機網路配置 2、ip addr 查看虛擬機ip地址 3、輸入dhclient獲取動態ip地址,將ip地址記錄下拉 4、進入vi /etc/sysconfig/network-scripts/ifcfg-ens33 5、將bootproto改為static,將onboot改 ...
  • 上一篇寫了Redis複製功能的簡單應用,下麵我們看下Redis複製功能的實現過程。下麵基本上是理論部分,枯燥乏味,但希望大家能看看,畢竟知識不都是感興趣的.耐得住寂寞,經得起誘惑,方能守得住繁華 ~.~舊版複製功能的實現 Redis的複製功能分為同步和命令傳播兩個操作: 1、同步操作用於將從伺服器的 ...
  • 本文來源於公眾號【胖滾豬學編程】,轉載請註明出處! 關於數據中台的概念和架構,我們在 "大白話 六問數據中台" 和 "數據中台全景架構及模塊解析!一文入門中台架構師!" 兩篇文章中都說明白了。從這一篇文章開始分享中台落地實戰。 其實無論是數據中台還是數據平臺,數據無疑都是核心中的核心,所以閉著眼睛想 ...
  • 腳本: /* 說明:sql server如何通過pivot對數據進行行列轉換 腳本來源:https://www.cnblogs.com/zhang502219048/p/12933347.html */ create table #t ( [員工工號] nvarchar(50), [員工姓名] nv ...
一周排行
  • 文章篇幅較長,閱讀完大概20min,建議收藏閱讀, 讀完會有收穫。歡迎點贊關註 原文鏈接:https://www.softwaretestinghelp.com/types-of-software-testing/ 有多少軟體測試類型呢? 我們作為測試人員瞭解很多種不同的軟體測試類型,例如功能測試( ...
  • 過場CG: 接到公司領導的文件指示,“小熊”需要在6月底去海外執行一個行動代號為【定時任務】的營救計劃,這個計劃關係到公司某個項目的生死(數據安全漏洞),作戰部擬定兩個作戰方案: 方案一:使用務定時任務框架quartz; 方案二:使用windows Service服務。 最終的作戰方案為:兩者配套使 ...
  • 為什麼編寫TaskSchedulerEx類? 因為.NET預設線程池只有一個線程池,如果某個批量任務一直占著大量線程,甚至耗盡預設線程池,則會嚴重影響應用程式域中其它任務或批量任務的性能。 特點: 1、使用獨立線程池,線程池中線程分為核心線程和輔助線程,輔助線程會動態增加和釋放,且匯流排程數不大於參數 ...
  • 前幾天,公眾號後臺有朋友在問Core的中間件,所以專門抽時間整理了這樣一篇文章。 一、前言 中間件(Middleware)最初是一個機械上的概念,說的是兩個不同的運動結構中間的連接件。後來這個概念延伸到軟體行業,大家把應用操作系統和電腦硬體之間過渡的軟體或系統稱之為中間件,比方驅動程式,就是一個典型 ...
  • 參考文檔: https://www.cnblogs.com/liaods/p/10101513.html https://www.cnblogs.com/zyz-Notes/p/12030281.html 本示例使用MVC項目做演示(不推薦,推薦直接用WebAPI),框架版本使用 4.6.2 為了支 ...
  • 引用NModbus 在NuGet搜索NModbus,添加引用。 封裝ModbusTcp類 public class ModbusTCP { private ModbusFactory modbusFactory; private IModbusMaster master; private TcpCl ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • Microsoft.AspNetCore.Mvc.Versioning //引入程式集 .net core 下麵api的版本控製作用不需要多說,可以查閱https://www.cnblogs.com/dc20181010/p/11313738.html 普通的版本控制一般是通過鏈接、header此類 ...
  • 結合 AOP 輕鬆處理事件發佈處理日誌 Intro 前段時間,實現了 EventBus 以及 EventQueue 基於 Event 的事件處理,但是沒有做日誌(EventLog)相關的部分,原本想增加兩個介面, 處理事件發佈日誌和事件處理日誌,最近用了 AOP 的思想處理了 EntityFrame ...
  • 什麼是sam 轉換 Single Abstract Method 實際上這是java8中提出的概念,你就把他理解為是一個方法的介面的就可以了 看一下我們每天都在使用的線程池 ExecutorService executorService= Executors.newScheduledThreadPo ...