redis—主从,哨兵,集群

news2024/11/19 21:26:49

redis常见的使用方式

Redis的几种常见使用方式包括:

  • Redis单副本;
  • Redis多副本(主从) ;
  • Redis Sentinel (哨兵) ;
  • Redis Cluster;
  • Redis自研。

使用场景:
如果数据量很少,主要是承载高并发高性能的场景,比如缓存一般就几个G的话, 单机足够了。
主从模式: master节点挂掉后,需要手动指定新的master,可用性不高,基本不用。

哨兵模式: master 节点挂掉后,哨兵进程会主动选举新的master,可用性高,但是每个节点存储的数据是一样的,浪费内存空间。数据量不是很多,集群规模不是很大,需要自动容错容灾的时候使用。

Redis cluster主要是针对海量数据+高并发+高可用的场景,如果是海量数据,如果你的数据量很大,那么建议就用Redis cluster,所有master的容量总和就是Redis cluster可缓存的数据容量。

redis单副本

Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。
在这里插入图片描述

多副本(主从)

​ Redis多副本,采用主从(replication) 部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。
在这里插入图片描述
优点:

  • 高可靠性: 一方面,采用双机主备架构,能够在主库出现故障时自动进行主备切换,从库提升为主库提供服务,保证服务平稳运行; 另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题;
  • 读写分离策略:从节点可以扩展主库节点的读能力,有效应对大并发量的读操作。

缺点:

  • 故障恢复复杂,如果没有RedisHA系统(需要开发),当主库节点出现故障时,需要手动将一个从
    节点晋升为主节点,同时需要通知业务方变更配置,并且需要让其它从库节点去复制新主库节点,整个过程需要人为干预,比较繁琐;
  • 主库的写能力受到单机的限制,可以考虑分片;
  • 主库的存储能力受到单机的限制,可以考虑Pika;
  • 原生复制的弊端在早期的版本中也会比较突出,如: Redis 复制中断后,Slave 会发起psync,此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时可能会造成毫秒或秒级的卡顿;又由于COW机制,导致极端情况下的主库内存溢出,程序异常退出或宕机;主库节点生成备份文件导致服务器磁盘IO和CPU (压缩)资源消耗;发送数GB大小的备份文件导致服务器出口带宽暴增,阻塞请求,建议升级到最新版本。

哨兵(sentinel)

主从模式下,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工千预,费事费力,还会造成一段时间内服务不可用。这种方式并不推荐,实际生产中,我们优先考虑哨兵模式。这种模式下,master
宕机,哨兵会自动选举master并将其他的slave指向新的master。

Redis Sentinel是社区版本推出的原生高可用解决方案,其部署架构主要包括两部分: Redis Sentinel集群和Redis数据集群。

其中Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现、故障自动转移、配置中心和客户端通知。Redis Sentinel的节点数量要满足2n+1 (n>=1) 的奇数个。

优点:

  • Redis Sentinel集群部署简单;
  • 能够解决Redis主从模式下的高可用切换问题:
  • 很方便实现Redis数据节点的线形扩展,轻松突破Redis自身单线程瓶颈,可极大满足Redis大容量或高性能的业务需求:
  • 可以实现一套Sentinel监控一 组Redis数据节点或多组数据节点。

缺点:

  • 部署相对Redis主从模式要复杂一些,原理理解更繁琐;
  • 资源浪费,Redis数据节点中slave节点作为备份节点不提供服务;
  • Redis Sentinel主要是针对Redis数据节点中的主节点的高可用切换,对Redis的数据节点做失败判
    定分为主观下线和客观下线两种,对于Redis的从节点有对节点做主观下线操作,并不执行故障转
    移。
  • 不能解决读写分离问题,实现起来相对复杂。

Redis哨 兵是怎么工作的?

1.每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及 其他Sentinel实例发送一个
PING命令。

2.如果一个实例(instance) 距离最后一次有效回复PING命令的时间超过down-after-milliseconds
选项所指定的值,则这个实例会被当前Sentinel标记为主观下线。

3.如果一个Master被标记为主观下线,则正在监视这个Master的所有Sentinel要以每秒一次的频率
确认Master的确进入了主观下线状态。

4.当有足够数量的Sentinel (大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入
了主观下线状态,则Master 会被标记为客观下线。

5.当Master被Sentinel标记为客观下线时,Sentinel 向下线的Master的所有Slave发送INFO命令的频率会从10秒一次改为每秒一次(在一般情况下,每个Sentinel会以每10秒一次的频率向它已知的所有Master,Slave发送INFO命令)。

6.若没有足够数量的Sentinel同意Master已经下线,Master 的客观下线状态就会变成主观下线。若Master重新向Sentinel的PING命令返回有效回复,Master 的主观下线状态就会被移除。

7.sentinel节点会与其他sentinel节点进行“沟通”,投票选举- - 个sentine|节点进行故障处理,在从节
点中选取一个主节点,其他从节点挂载到新的主节点上自动复制新主节点的数据。

集群(cluster)

Redis的哨兵模式基本已经可以实现高可用,读写分离,但是在这种模式下每台Redis服务器都存储相同的数据,很浪费内存,所以在Redis3.0.上加入了Cluster集群模式,实现了Redis的分布式存储,对数据进行分片,也就是说每台Redis节点上存储不同的内容。

Redis Cluster是社区版推出的Redis分布式集群解决方案,主要解决Redis分布式方面的需求,比如,当
遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster能起到很好的负载均衡的目的。

Redis Cluster集群节点最小配置6个节点以上(3主3从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。

Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~ 16383个整数槽内,每个节点负责维护
一部分槽以及槽所印映射的键值数据。

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

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

相关文章

Qt扫盲-QPushButton 理论总结

QPushButton 理论总结一、简述二、常用要点1. 快捷键相关2. 信号相关3. 默认按钮3. 推荐使用4. 重复功能5. 菜单功能一、简述 PushButton 按钮或CommandButton 按钮应该是图形用户界面中最常用的小部件。按下(单击)一个按钮就可以命令计算机执行某些操作…

【1691. 堆叠长方体的最大高度】

来源:力扣(LeetCode) 描述: 给你 n 个长方体 cuboids ,其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti](下标从 0 开始)。请你从 cuboids 选出一个 子集 &#xff0c…

快速傅里叶变换及Python代码实现

一、前言 我想认真写好快速傅里叶变换(Fast Fourier Transform,FFT),所以这篇文章会由浅到细,由窄到宽的讲解,但是傅里叶变换对于寻常人并不是很容易理解的,所以对于基础不牢的人我会通过前言普…

阿里巴巴2022年最新最全500道Java后端面试大全(值得收藏)

进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全其中概括的知识点有:Java基础、spring、springmvc、springboot、springcloud、JVM、Tomcat、dubbo、netty、zookeeper共有50…

Java中四大线程池应用及详解

线程池的思想 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率&a…

移动网络技术--名词介绍

GPRS网络制式(General Packet Radio Service)为“通用分组无线服务”,它是利用“包交换”(Packet-Switched)的概念所发展出的一套基于GSM系统的无线传输方式。 GGSN(Gateway GPRS Supporting Node,网关GPR…

Nginx入门到弃坑---安装与使用篇(2)

1 下载 官网传送门下载传送门点击下载最新Windows-1.23版下载传送门点击下载最新Linux-1.23版下载传送门 2 Windows安装 2.1 环境介绍 下载完成后解压缩 目录如下 配置文件地址:.\nginx-1.23.2\conf\nginx.conf,默认配置的nginx监听的端口为80&…

监控系列(一)DM8+Prometheus+Grafana搭建

一、背景 近期进行适配,因用户统一监控平台使用的是promethesugrafanaaltermannger这一套,因此对达梦数据库进行适配对接。 目前主要有两种方式: 1. 部署Dem管理系统对外提供接口推送到prometheus进行采集数据,采集项可查看《De…

【云计算与大数据技术】分布式计算、虚拟化技术、并行编程技术等技术讲解(超详细必看)

一、分布式计算 分布式计算是一种计算方法,和集中式计算相对,随着计算的发展,一些应用需要巨大的计算能力才能完成,如果采用集中式计算则需要耗费很长的时间,而分布式计算将应用分解成许多更小的部分,分配…

文献阅读(195)物理设计/时序分析

文章目录物理设计时序分析题目:Intelligent Design Automation for 2.5/3D Heterogeneous SoC Integration时间:2020会议:ICCAD研究机构:国立台湾大学 本篇论文的主要贡献: 物理设计:包括RDL布线和板级布…

蚁群优化算法解决TSP问题(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

CSS 3万字超详细总结

文章目录1. CSS简介2. CSS的使用2.1 行内样式2.2 内部样式表2.3 外部样式表2.4 多重样式与样式优先级3. CSS选择器3.1 简单选择器3.1.1 元素选择器3.1.2 id选择器3.1.3 class选择器3.2 组合器选择器3.2.1 后代选择器3.2.2 子选择器3.2.3 相邻兄弟选择器3.2.4 通用兄弟选择器3.3…

C# 流程控制语句

一 结构化程序设计的三种基本流程 1 顺序 分支 循环 2 简单语句 最简单的语句:方法调用语句及赋值语句 后面有个分号 如: System.Console.Write("Hello World"); ba>0?a:-a; sTextBox1.Text; dint.Parse(s);注意:没有表达式…

SpringBoot简单优雅实现图片上传功能(超详细)

文章目录前言技术栈项目目录前端实现index.htmlscript.js后端实现MultipartFile 介绍配置文件实体类ControllerMapperService拦截器测试结果展示前言 最近有一个需求需要实现图片上传,因此,本人找到了一个可以快速实现该功能的插件mini-upload-form。在…

CAS:2374782-03-1,NOTA-FAPI-4化学试剂供应

试剂描述 NOTA-FAPI-4是FAPI-4的类似物和成纤维细胞活化蛋白(FAP)抑制剂。NOTA-FAPI-4可作为PET示踪剂用于检测与成纤维细胞活化蛋白相关的紊乱。 试剂基本信息 1、名称:NOTA-FAPI-4 2、CAS编号:2374782-03-1 3、分子式&#x…

Seata模式

爬虫组件分析目录概述需求:设计思路实现思路分析1.一、AT 模式参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survi…

_4LeetCode代码随想录算法训练营第四天-C++

_4LeetCode代码随想录算法训练营第四天-C 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 24.两两交换链表中的节点 整体思路 不是简单地交换值,而是交换指针地指向。 终止条件为: cur->next ! nul…

偏微分方程重要的前置知识

现在觉得很dog 开学期末考试正好美赛。无法评论,无法评论。乐淘淘,乐淘淘。期末考试不要延迟,求求了或者不安排在下学期第一周也可以。。。。反正求求了,美赛机会难得当然,如果是偏微分方程的问题的话,其实…

springboot连接Oracle的注意点(数据库信息配置、主键精度问题、OJDBC jar包、Oracle主键自增问题)

开篇废话:(前段时间因为太忙没有坚持写博客,导致很久没有更新,今天终于忙里偷闲写上一篇) 最近做了一个项目,数据库用的是Oracle,由于之前一直用的是MySQL,所以在一些细节配置上不是…

详细教你用NPS搭建内网穿透服务

文章目录 前言一、NPS概述 NPS的原理 二、NPS服务器搭建 1、下载软件2、云服务器配置 2.1、防火墙配置2.2、用WinSCP远程上传服务文件2.3、使用SSH终端安装启动2.4、修改配置文件 三、客户端连接总结 前言 相信大家外出旅游或者出差都是背着轻薄本,如果空闲之余想…