什么是Redis腦裂,如何解決呢

Redis 腦裂問題是指,在 Redis 哨兵模式或集群模式中,由于網絡原因,導致主節點(Master)與哨兵(Sentinel)和從節點(Slave)的通訊中斷,此時哨兵就會誤以為主節點已宕機,就會在從節點中選舉出一個新的主節點,此時 Redis 的集群中就出現了兩個主節點的問題,就是 Redis 腦裂問題。

腦裂問題影響

Redis 腦裂問題會導致數據丟失,為什么呢?來看腦裂問題產生的過程:

b380451104794831ba5ad5e7ff9ca0a2.jpeg

?

而最后一步,當舊的 Master 變為 Slave 之后,它的執行流程如下:

  1. Slave(舊 Master)會向 Master(新)申請全量數據。
  2. Master 會通過 bgsave 的方式生成當前 RDB 快照,并將 RDB 發送給 Slave。
  3. Slave 拿到 RDB 之后,先進行 flush 清空當前數據(此時第四步舊客戶端給他的發送的數據就丟失了)。
  4. 之后再加載 RDB 數據,初始化自己當前的數據。

從以上過程中可以看出,在執行到第三步的時候,原客戶端在舊 Master 寫入的數據就丟失了,這就是數據丟失的問題。

如何解決腦裂問題?

腦裂問題只需要在舊 Master 恢復網絡之后,切換身份為 Slave 期間,不接收客戶端的數據寫入即可,那怎么解決這個問題呢?

Redis 為我們提供了以下兩個配置,通過以下兩個配置可以盡可能的避免數據丟失的問題:

  • min-slaves-to-write:與主節點通信的從節點數量必須大于等于該值主節點,否則主節點拒絕寫入。
  • min-slaves-max-lag:主節點與從節點通信的 ACK 消息延遲必須小于該值,否則主節點拒絕寫入。

這兩個配置項必須同時滿足,不然主節點拒絕寫入。

在假故障期間滿足 min-slaves-to-write 和 min-slaves-max-lag 的要求,那么主節點就會被禁止寫入,腦裂造成的數據丟失情況自然也就解決了。

參考 & 鳴謝

javacn.site

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18669.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

方均根為什么等于有效值

方均根值(Root Mean Square,簡稱RMS)等于有效值,是因為這種計算方法能夠準確地反映周期性波動量(如交流電、振動等)的平均能量或做功能力。對于交流電而言,其瞬時值隨時間變化,直接取…

IdentiFace——多模態人臉識別系統,可捕捉從情緒到性別的所有信息及其潛力

1. 概述 面部識別系統的開發極大地推動了計算機視覺領域的發展。如今,人們正在積極開發多模態系統,將多種生物識別特征高效、有效地結合起來。 本文介紹了一種名為 IdentiFace 的多模態人臉識別系統。該系統利用基于 VGG-16 架構的模型,將人…

【NumPy】NumPy線性代數模塊詳解:掌握numpy.linalg的核心功能

🧑 博主簡介:阿里巴巴嵌入式技術專家,深耕嵌入式人工智能領域,具備多年的嵌入式硬件產品研發管理經驗。 📒 博客介紹:分享嵌入式開發領域的相關知識、經驗、思考和感悟,歡迎關注。提供嵌入式方向…

多年期貨盈利的秘訣就是虧了就跑

不怎么看消息面,尤其期貨,外匯。 正大招主賬戶:歐美4恒指26小恒12 歡迎咨詢代理 詳YJCFPL 堅持學習,吸收別人的經驗,為我所用。 獨立思考,培養良好的生活習慣。 我能活到現在的秘訣就是:虧了就趕…

Hexo最新實戰:(一)Hexo7.0+GitHub Pages博客搭建

前言 很多平臺都能寫博客還有創作激勵,為什么我又要搭一個?為什么這次要選擇用Hexo框架? 對應的原因是流量自由和省錢,第一個,很多平臺能寫但不是都有收益,而且平臺有自身的規則,比如會屏蔽一…

【區塊鏈】外部應用程序與區塊鏈進行交互

一,外部應用程序與區塊鏈進行交互案例目標與流程 1.1案例目標 掌握FISCO BCOS應用環境的搭建 與使用(FISCO BCOSWeBASE)掌握基于Java SpringBoot的應 用程序后端項目搭建與開發。掌握應用程序后端與FISCO BCOS 鏈的交互。掌握應用程序前端…

『大模型筆記』量化 vs 剪枝 vs 蒸餾:為推理優化神經網絡!

量化 vs 剪枝 vs 蒸餾:為推理優化神經網絡! 文章目錄 一. 量化 vs 剪枝 vs 蒸餾:為推理優化神經網絡!1.1. 量化(Quantization)1.2. 剪枝(purning)1.3. 知識蒸餾(Knowledge Distillation,也稱為模型蒸餾)1.4. 工程優化(Engineering Optimizations)1.5. 總結二. 參考…

【旅行商問題的優化】

#include<bits/stdc.h> // 包含標準庫的頭文件using namespace std; // 使用標準命名空間template <class Type> // 模板聲明&#xff0c;Type為類型參數 class Traveling{ // 定義Traveling類friend Type Tsp(int **, int[],int, Type); // 聲明友元函數Tsp publi…

WPF hc:PropertyGrid 嵌套顯示

重點&#xff1a; 編寫Edit特性即可&#xff1a; public class ParameterEditor : PropertyEditorBase{public override FrameworkElement CreateElement(PropertyItem propertyItem){var pg new PropertyGrid();return pg;}public override DependencyProperty GetDependen…

2024/5/22 ARMday7

按鍵控制LED燈亮和滅 do_irq.c #include "key_it.h" //#include "led.h" extern void printf(const char *fmt, ...); unsigned int i 0; void do_irq(void) {//獲取中斷號unsigned int irqno(GICC->IAR & (0x3FF));switch (irqno){case 99://處…

Playwright 元素定位

一、get_by_XXXXX 1. get_by_role&#xff1a;根據元素角色進行定位, 常用的參數有兩個&#xff0c;第一個是角色名稱 role&#xff0c;第二個是元素的文本 name。其他參數的解釋大家可以參考源碼注釋。 # 獲取頁面名稱為確定的按鈕 page.get_bt_role(button, name確定) pl…

cfa三級大神復習經驗分享系列(一)

教材還是Notes? 對于愚鈍如我之流&#xff0c;建議大家三級一定要看教材。Note很精華很濃縮&#xff0c;我覺得看過教材再看note感覺總結的很精辟&#xff0c;但是Note是以考點列的&#xff0c;而教材像小說一樣娓娓道來&#xff0c;有邏輯有情節&#xff0c;如果不follow很難…

Android MIPI屏配置

參考資料&#xff1a;RockChip發布的DRM Display Driver Development Guide手冊&#xff0c;以及網上大量相關博客資料 首先要拿到《屏幕硬件規格書》和《DataSheet》&#xff0c;軟件配置主要依靠DataSheet提供數據支持。 查閱DataSheet里面on sequence和off sequence說明&a…

機器學習之爬山算法(Hill Climbing Algorithm)

爬山算法(Hill Climbing Algorithm)是一種簡單而常見的啟發式搜索算法,通常用于解決優化問題。它的基本思想類似于登山過程中爬升到山頂的過程,即從一個起始點開始,不斷嘗試向鄰近的點移動,直到找到一個局部最優解。 下面是爬山算法的基本工作流程: 初始化:選擇一個初…

關于同一個地址用作兩個不同頁面時,列表操作欄按鈕混淆狀態

同一個地址用作兩個不同頁面時&#xff0c;列表頁的操作欄中有好多個按鈕&#xff0c;如果用了v-if&#xff0c;可能會導致按鈕混淆狀態如disabled等屬性混亂 解決方法1&#xff1a; 將v-if換成v-show&#xff0c;用了v-show之后意味著所有按鈕都在只是在頁面上隱藏了 解決方…

【python深度學習】——torch.min()

【python深度學習】——torch.min 1. torch.min()1.1 計算整個張量的最小值1.2 沿特定維度計算最小值1.3 比較兩個張量 1. torch.min() torch.min()接受的參數如下: input: 輸入的張量。dim: 沿指定維度尋找最小值。如果指定了該參數&#xff0c;返回一個元組&#xff0c;其中…

基于Vue+SpirngBoot的博客管理平臺的設計與實現(論文+源碼)_kaic

摘 要 隨著當下社會的發展&#xff0c;互聯網已經成為時代的主流&#xff0c;從此進入了互聯網時代&#xff0c;對大部分人來說&#xff0c;互聯網在日常生活中的應用是越來越頻繁&#xff0c;大家都在互聯網當中互相交流、學習、娛樂。博客正是扮演這樣一個角色。博客已成為當…

[Nodejs]使用adm-zip和fs-extra壓縮打包后的文件

在此之前&#xff0c;操作目錄、壓縮文件是通過scripts來實現的&#xff0c;在windows機器上多有不便&#xff0c;需要通過linux命令行來實現cp、rm命令&#xff1a; "cpdist": "cp -r ./dist/* ../../qw-portal/assetAllocation/", "rmdist": …

實驗八 單區域OSPF路由協議配置

一、實驗目的 掌握 OSPF 動態路由協議的配置、診斷方法。 二、實驗步驟 1、 運行Cisco Packet Tracer軟件&#xff0c;在邏輯工作區放入三臺路由器、兩臺工作站PC及一臺筆記本&#xff0c;分別點擊各路由器&#xff0c;打開其配置窗口&#xff0c;關閉電源&#xff0c;分別加…

如何選擇云服務器

云服務器選擇概述 在選擇合適的云服務器時&#xff0c;需要綜合考慮多個方面的因素&#xff0c;包括但不限于云服務器的類型、配置、價格、性能、安全性、可靠性、擴展性以及服務商的品牌信譽等。以下是根據搜索結果得出的詳細分析和建議。 云服務器選擇詳解 云服務器類型選…