Redis是如何保证高可用的?

Redis这种基于内存的关系型数据库我们在选用的时候就是考虑到它的快。而且可以很方便的实现诸如分布式锁、消息队列等功能。

笔者在前一段秋招面试的时候就被提问,“Redis是怎么保证高可用的?” 后续的子问题包含,集群模式是怎么实现的? 哨兵模式又是怎样工作的? 哨兵的存在是怎么保证其他节点正常运行的? 如果哨兵自己宕机了,整个系统又怎么样?


怎么保证高可用?

Redis可以通过主从复制的方式来实现高可用。主节点负责处理客户端的请求,从节点负责复制主节点的数据,如果主节点出现故障,从节点可以接管主节点的工作,从而保证服务的可用性。

集群模式是怎么实现的?

Redis的集群模式是通过将多个Redis实例组织成集群来实现的,每个实例都可以充当主节点或从节点。集群模式解决的问题是提高Redis服务的可用性,使得在主节点出现故障时,可以自动将从节点升级为主节点,从而保证服务的可用性。

哨兵模式是什么? 哨兵模式是怎样组织与工作的?

哨兵模式是一种基于规则的自动化管理系统,用于监控Redis实例的状态,并在需要时自动进行故障转移。在哨兵模式下,Redis会创建一个或多个哨兵实例,这些实例会定期检查Redis实例的状态,并在检测到故障时自动将从节点升级为主节点,从而保证服务的可用性。

哨兵模式下的故障细分为两种情况:

当哨兵节点自己故障时,它会从其他哨兵节点或主节点获取状态信息,如果检测到主节点故障,它会尝试将从节点升级为主节点。如果升级成功,哨兵节点会将故障的主节点从集群中移除,并将其从节点设置为新的主节点。 当哨兵节点检测到主节点故障时,它会尝试将从节点升级为主节点。如果升级成功,哨兵节点会将故障的主节点从集群中移除,并将其从节点设置为新的主节点。此时,客户端可以继续向新的主节点发送请求,从而保证服务的可用性。

且这里仍然需要补充哨兵如何判断节点发生故障或判定下线:

涉及两个新的概念:主观下线和客观下线。

1. 主观下线:一个哨兵节点判定主节点down掉是主观下线。

2.客观下线:只有半数哨兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。

3.原理:基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制Raft算法(选举算法),最终被投为领导者的哨兵节点完成主从自动化切换的过程。


 

 

参考资料

图解Redis介绍 | 小林coding

2020-01-25:redis中,哨兵如何选举?-腾讯云开发者社区-腾讯云

最近在看redis,花了点时间整理了一下学习内容,都是一些基础,想学的可以看下 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

Redis哨兵、复制、集群的设计原理与区别 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/50353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

睿趣科技:抖音开网店要怎么找货源

在当今数字化的时代,电商平台的兴起为越来越多的人提供了开设网店的机会,而抖音作为一个充满活力的短视频平台,也为创业者提供了广阔的发展空间。然而,对于许多初次涉足电商领域的人来说,找到合适的货源却是一个重要的…

Qt应用开发(拓展篇)——示波器/图表 QCustomPlot

一、介绍 QCustomPlot是一个用于绘图和数据可视化的Qt C小部件。它没有进一步的依赖关系,提供友好的文档帮助。这个绘图库专注于制作好看的,出版质量的2D绘图,图形和图表,以及为实时可视化应用程序提供高性能。 QCustomPl…

../../ 目录遍历

在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后…

前端工程化概述

软件工程定义:将工程方法系统化地应用到软件开发中 前端发展历史 前端工程化的发展历史可以追溯到互联网的早期阶段,随着前端技术的不断演进和互联网应用的复杂化,前端工程化也逐渐成为了前端开发的重要领域。以下是前端工程化的主要发展里程…

UE5 运行时捕捉外部窗口并嵌入到主窗口

UE5 运行时捕捉外部窗口并嵌入到主窗口的一种方法 创建一个Slate类用于生成一个窗口 .h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Widgets/SCompoundWidget.h"/*…

Three.js 实现模型材质局部辉光(发光,光晕)效果和解决辉光影响场景背景图显示的问题

1.Three.js 实现模型材质局部辉光(发光,光晕)效果 2.解决辉光效果影响场景背景图显示的问题 相关API的使用: 1. EffectComposer(渲染后处理的通用框架,用于将多个渲染通道(pass)组…

Training Technology One : Distribution

文章目录 训练命令初始化获得分布式参数设定GPU初始化同步输出控制(非常规流程,技巧)*分布式判断(非常规流程,技巧)* 数据集模型训练 本节内容以BLIP的分布式训练代码为蓝本介绍分布式训练的过程. 本文采用DDP作为分布式框架, 库为torch.distributed. 训练命令 python -m tor…

Docker搭建LNMP----(超详细)

目录 ​编辑 一、项目环境 1.1 所有安装包下载: 1.3 服务器环境 1.4任务需求 二、Ngin 2.1、建立工作目录 2.2 编写 Dockerfile 脚本 2.3准备 nginx.conf 配置文件 2.4生成镜像 2.5创建自定义网络 2.6启动镜像容器 2.7验证 nginx、 三、Mysql 3.1建立…

http请求中token和cookie有什么区别? 连环问:session和JWT那个更好? 连环问:如何实现SSO单点登录?

参考地址:SameSite cookies explained cookie: 1. HTTP无状态,每次请求都要带cookie,以帮助识别身份 2. 服务端也可以向客户端set-cookie, cookie大小限制4kb 3. 默认有跨域限制:不可跨域共享、传递cookie cookie本地存储: 1. HTML5之前 cookie 常被用于本地存储 …

APEX内置验证与授权管理

参考博客:(真的很好的教程,感谢!) 09技术太卷我学APEX-定制页面及导航菜单权限_白龙马5217的博客-CSDN博客https://blog.csdn.net/html5builder/article/details/128816236?spm1001.2014.3001.5501 1 应用程序安全性…

海外网红营销中的创新技术与趋势:AI、AR和VR的应用探索

随着全球数字化时代的不断发展,互联网已经成为连接人们的桥梁,而社交媒体则在其中扮演着举足轻重的角色。在这个全球性的社交媒体网络中,海外网红以其独特的个人魅力和内容创作能力迅速崭露头角。而为了在竞争激烈的市场中脱颖而出&#xff0…

并发和并行的区别 以及什么是串行,还有同步和异步;阻塞非阻塞;还有进程、线程、协程一次说清。

。 并发和并行的区别 以及什么是串行,还有同步和异步:阻塞非阻塞: 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。并行:单位时间内&#xf…

BBS项目 day05 后台系统功能(首页、文章列表展示、添加文章、上传文件(uuid生成新的文件名))

一、后台功能的初始配置 1. urls.py路由分发 re_path(app02/, include(app02.urls)),2.app02/urls.py from django.urls import path, re_path, include from app02 import viewsurlpatterns [path(home/, views.home),path(article_list/, views.article_list),path(add_ar…

单片机(二)使用位移 让灯亮

一:硬件电路 P2 口: P2.0~ P2.7 是这些 I0 口 LED 阳极接 电源 , P20 口 为低电平 可以让 LED灯 亮 二:软件实现部分 两种 ① 通过循环 来展示从左 到右 #include "reg52.h"#define LED_PORT P2 // 定义单片机的P2端…

软考A计划-系统集成项目管理工程师-项目变更管理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

Jackson 实现 JSON 字段类型处理器

1.处理过程 1.1 实体类设为autoResultMap true TableName(value "table1", autoResultMap true)1.2 字段 typeHandler JacksonTypeHandler.class ApiModelProperty(value "明细")TableField(value "detail", typeHandler JacksonTypeHa…

【Spring Boot】Spring Boot整合多数据源

文章目录 前言一、基本概念1.1 什么是多数据源?1.2 为什么要使用多数据源? 二、如何在 Spring Boot 中整合多数据源?2.1 基本配置2.2 项目代码2.3 注意事项 前言 在实际的开发工作中,我们经常会遇到需要整合多个数据源的情况&…

Nginx使用keepalived配置VIP

VIP常用于负载均衡的高可用,使用VIP可以给多个主机绑定一个IP,这样,当某个负载应用挂了之后,可以自动切到另一个负载。 我这里是在k8s环境中做的测试,集群中有6个节点,我给140和141两个节点配置VIP。 1. 安…

Python土力学与基础工程计算.PDF-压水试验

Python 求解代码如下: 1. import math 2. 3. # 输入参数 4. L 2.0 # 试验段长度,m 5. Q 120.0 # 第三阶段计算流量,L/min 6. p 1.5 # 第三阶段试验段压力,MPa 7. r0 0.05 # 钻孔半径,m 8. 9. # 计算透…

Docker 微服务实战

1. 通过IDEA新建一个普通微服务模块 1.1 建Module docker_boot 1.2 改写pom <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&…