Redis主从哨兵集群

news2025/1/14 1:18:16

主从

在这里插入图片描述

主从同步原理

1.全量同步

在这里插入图片描述

1.从节点刚连接到主节点时,主动请求数据同步
2.主节点判断是否是第一次同步,如果是,就返回主节点的数据版本信息
3.随后,主节点执行bgsave,生成RDB文件,并发送给从节点
4.这个过程中以及随后产生的全部命令都会记录到repl_baklog这个缓冲区中,然后一点一点的同步给从节点,这样就保证了主从节点数据的一致性

2.部分同步

在这里插入图片描述

当master和slave断开重连后,一般都会对整份数据进行复制。但从redis2.8版本开始,redis改用可以支
持部分数据复制的命令PSYNC去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。
master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master
继续进行未完成的复制,从所记录的数据下标开始。如果master进程id变化了,或者从节点数据下标offset太旧,已经不在master的缓存队列里了,那么将会进行一次全量数据的复制。

主从优缺点

优点

1.冗余备份数据
2.读写分离,提高服务器性能

缺点

一旦Master节点由于故障不能提供服务,需要人工将Slave节点晋升为Master节点

哨兵

在这里插入图片描述

选主节点规则

主要是看各个节点的打分情况,打分规则分为 从库优先级从库复制进度从库ID号。只要有一轮,某个从库得分最高,则选举它为主库。

1.从库优先级,主要是考虑到不同的机器可能配置不一样,配置高的机器,优先级高一些,通过slave-priority 来配置
2.从库复制进度,主要是看slave_repl_offset 的值大小,值越大表示已经同步的数据越多,得分越高。
3.从库ID号,每个Redis 实例启动时,都会生成一个 ID,在优先级和复制进度相同的条件下,ID号最小的从库分数最高,会被选为新主库。

哨兵模式脑裂导致数据丢失

脑裂 也就是说,某个 Master 所在机器突然脱离了正常的网络,跟其他 slave 机器不能连接,但是实际上 master 还运行着。此时哨兵可能就会认为 master 宕机了,然后开启选举,将其他 slave 切换成了 master。这个时候,集群里就会有两个 Master ,也就是所谓的脑裂。此时虽然某个 slave 被切换成了 master,但是可能 client 还没来得及切换到新的 master,还继续向旧 master 写数据。造成数据丢失。

解决脑裂问题

min-slaves-to-write 1
min-slaves-max-lag 10

如上两个配置:要求至少有 1 个 slave,数据复制和同步的延迟不能超过 10 秒,如果超过 1 个 slave,数据复制和同步的延迟都超过了 10 秒钟,那么这个时候,master 就不会再接收任何请求了。

哨兵模式的优缺点

优点

哨兵模式是基于主从模式的,所有主从的优点,哨兵模式都具有。主从可以自动切换,系统更健壮,可用性更高。

缺点

具有主从模式的缺点,每台机器上的数据是一样的,内存的可用性较低。
还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本。
Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。

集群

在这里插入图片描述

哨兵模式基于主从模式,实现读写分离,它还可以自动切换,系统可用性更高。但是它每个节点存储的数据是一样的,浪费内存,并且不好在线扩容。因此,Reids Cluster集群(切片集群的实现方案)应运而生,它在Redis3.0加入的,实现了Redis的分布式存储。对数据进行分片,也就是说每台Redis节点上存储不同的内容,来解决在线扩容的问题。并且,它可以保存大量数据,即分散数据到各个Redis实例,还提供复制和故障转移的功能。

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

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

相关文章

Java时间类

时间在Java中是两个类 Date 和 Calendar Date类 Date是在Java.util包中的也就是工具包。 测试 输出的是当前的系统时间 修改idea中的注释的颜色: 是date不是data package org.data; import java.util.Date; public class Test { public static void main(…

【Oracle】20230106PLSQL中文不显示,全部为?解决流程

问题:查询的表中有中文数据,全部显示为? 解决途径1:修改注册表以及环境变量(改系统变量!不要只改用户变量) Oracle使用——PLSQL的中文乱码显示全是问号_海蓝树的博客-CSDN博客_plsql无法显示…

上线网站详细介绍(服务器购买-域名申请-SSL证书申请)

文章目录上线之前的准备工作,通俗的来讲:服务器是什么-云服务器购买域名解释-域名备案-域名如何申请①什么是域名,为什么要域名?②为什么非要域名备案和不备案的区别?③自己的主机怎么备案-自己的电脑可以作为服务器吗…

系分架构 - 软件架构设计

个人总结,仅供参考,欢迎加好友一起讨论 文章目录系分&架构 - 软件架构设计考点摘要概念架构的 4 1 视图软件架构风格经典五大架构风格调用/返回风格独立构件风格虚拟机风格仓库风格层次架构风格二层C/S架构三层C/S架构B/S架构混合架构风格闭环控制架…

Linux 软件管理 RPM 管理工具

概念引入 : # 首先提出一个问题,我们在 Linux 操作系统中是如何 安装软件的 ?? >>> 在 Linux 系统中,安装软件是有三种方式 >>> 第一种 : RPM 管理工具 第二种 : …

如何在新环境接手项目?(上)【洞见2】

01、世界真实情况根据IDC机构在2022年统计显示,截止2021年我国中小企业数量已达到4881万家,同比增长8.5%。中小企业的行业分布不均匀,超过70%的中小企业分布于专业服务业(含互联网和科技服务)、物流批发、零售和制造业…

剑指offer----C语言版----第十一天

目录 1. 数值的整数次方 1.1 运行超时的思路 1.2 思路一: 快速幂 (递归实现) 1.3 思路二: 快速幂 (迭代实现) 1. 数值的整数次方 原题链接: 剑指 Offer 16. 数值的整数次方 - 力扣(LeetCode)https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-f…

web3学习:什么是以太坊

以太网是“世界的计算机”,这是以太坊平台的一种常见描述。这是什么意思呢?让我们首先从关注计算机科学的描述开始,然后对以太坊的功能和特性进行更实际的解读,并将其与比特币和其他分布式账本技术(简单起见&#xff0…

深度学习笔记:神经网络(2)

对于神经网络上一篇文章,可见:https://blog.csdn.net/Raine_Yang/article/details/128473486?spm1001.2014.3001.5501 神经网络各层信号传递的实现: 对于全连接网络,连接权重的个数为(前一层神经元总数 * 后一次神经…

el-table(type=“selection“)多选框两种回显

目录 一、前端数据回显(页面间数据展示) 1、图篇帮助理解 2、描述: 3、代码 4、两个API,一个v-model 二、数据库数据回显 1、描述: 2、核心代码: 3、比较完整代码:(这是element ui官方文档上的) 4…

XMLHttpRequest 对象(AJAX通信)

1.XMLHttpRequest 对象是什么? 浏览器与服务器之间,采用 HTTP 协议通信。用户在浏览器地址栏键入一个网址,或者通过网页表单向服务器提交内容,这时浏览器就会向服务器发出 HTTP 请求。 1999年,微软公司发布 IE 浏览器…

基于STM32F411使用SPI+DMA驱动LCD

先看效果 F411CE 硬件SPI+DMA驱动LCD基于HAL库 其实HAL库我用不太习惯,一直也是用的标准库 但HAL库确实是好上手一些,就迅速创建一个新的template 这次就当尝试一下吧,因为用的比较少,我会记录的详细 如图点击&…

火山引擎DataLeap数据调度实例的 DAG 优化方案

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 实例 DAG 介绍 DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成、开发、运维、治理、资产管理能力于一身的大数据研发治理套件。在平台中&…

从0到1完成一个Vue后台管理项目(四、引入axios、配置路由)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) axios axios就是…

手握智算中心“绿洲”,毫末跑在中美自动驾驶长跑第一线

作者 | 白日梦想家 编辑 | 王博2022年过去,数据驱动成为自动驾驶演进共识。沿着数据驱动这条路线,自动驾驶加速迈入智算时代。 智算中心应运而生。 实际上,将智算引入自动驾驶的开先河者是特斯拉,其率先发布了专用于自动驾驶训练的…

登录与授权

目录 1.获取用户信息 1.button.open-type.getUserInfo 2.open-data组件 3.wx.getUserProfile(Object object) 头像昵称填写功能 2.登录 登录的流程图 sessin_key 3.授权 wx.openSetting wx.getSetting wx.authorize 手机号授权 登录与授权是两个不关联的事情&…

[Leetcode] 相同的树、对称二叉树

相同的树和对称二叉树都可以使用递归实现。相同的树题目链接:https://leetcode.cn/problems/same-tree/solution/xiang-tong-de-shu-by-leetcode-solution/1.1 递归、深度优先搜索使用递归,将问题转换为 --> 判断当前节点是否相同 判断左右子树分别是…

以前不知道字节面试难在哪,现在体验到了,被虐的很惨...

人们都说,互联网寒冬来了,这个时候还在大面积招人的公司,必然是牛逼的公司。而这个时候勇敢跳槽的人,必然是牛逼的人。于是我开始了字节跳动的社招面试。 为了这天,我前一天排老长的队,理了个利落的发型&a…

蚂蚁帮路由器Antbang A3s V2.0刷入OpenWrt/LEDE

参考资料路由器基本常识_冰色阳光的博客-CSDN博客_路由器bootloader是什么https://www.right.com.cn/forum/thread-3191610-1-1.html已知问题刷入OpenWrt/LEDE后,似乎路由器的Reset键不起作用。路由器在启动时,正常会先运行引导程序Breed,然后…

LinuxC—文件系统学习笔记

文件系统 1 目录和文件 1.1 获取文件属性信息stat 相关函数 stat() 得到file指向的文件并将其属性回填到buf中,面对符号链接文件时获取的是所指向的目标文件的属性 /* Get file attributes for FILE and put them in BUF. */ extern int stat (const char *__res…