Redis-04 主从架构原理与搭建及主从优化方案

        生产中使用Redis往往非单机部署,虽然根据前文已经对redis做了数据持久化处理,但是如果Redis服务宕机,所有的数据操作都将直接进入数据库,如果操作量很大,则相当于出现缓存穿透的现象。故生产中使用Redis一般采取【主从+哨兵】或【主从+读写分离】模式部署。本章节主要讲解【主从】模式,文末将对几种模式做简单比较。

1,主从架构实现及原理

        普通的主从架构非常简单,即我们常理解的一主一从或一主多从架构(下文将提供更优化的主从架构),如下图。Redis的数据操作通过主节点操作,再将数据同步到各从节点上。

        1.1,主从搭建

        主从架构的搭建也非常容易,只需将redis从服务的配置修改即可,本节案例在一台服务器搭建主从。

1,复制主节点redis.conf文件

cp /opt/redis/redis.conf /opt/redis/config/redis-6380.conf

2,修改redis-6380.conf文件

bind 0.0.0.0  // 主节点设置,否则:Error condition on socket for SYNC: Connection refused

port 6380     // 端口

daemonize  yes    // 后台进程

pidfile /var/run/redis-6380.pid    // 后台进程时,redis会把pid进程号写入pidfile配置的文件

logfile "redis-6380.log"   // 从节点日志

replicaof 主节点IP 主节点端口   // 表明数据来源的主节点

replica-read-only yes   // 配置从节点只读

2,启动从节点

redis-server redis-6380.conf

        从节点启动时,会自动同步主节点数据,最终数据是否同步完成(主从数据是否一致),可同过主节点的【info replication】查看,如下图:

        1.2,主从工作原理(全量数据同步原理)

        1,当作为slave的Redis服务启动后,slave会与master创建一个长连接,用于数据和命令从master传输给slave。连接创建好后,slave向master发送数据同步请求。

        2,master收到请求后,对当前时刻的内存数据做持久化(调用【bgsave】),生成RDB文件(当前时刻持久化数据文件),持久化期间master的写操作放在内存的复制缓存区(repl buffer)。

        3,master持久化做完后,将RDB文件发送给slave,slave接受并加载数据至内存(此时的master还在接受写操作并记录至repl buffer)。

        4,slave加载完成后通知master,master再将repl buffer中的写操作发送给slave,slave接受后执行命令集。

        至此主从数据同步完成,后续master节点的所有写操作都将通过长连接直接发送给slave执行一次。

        1.3,部分数据同步原理

        1.2说的是从节点第一次启动,发送的数据同步请求是【全量数据同步】请求。因全量同步的数据量较大,发送和同步时间较长,故当从节点在同步主节点发来的RDB数据时宕机,或在后续系统使用中宕机,在从节点再次重启时,无需再次进行全量数据同步。Redis提供了部分数据同步机制,原理如下:

1,当主节点有了从节点并创建好连接后,主节点会在内存中创建一块【复制积压缓冲区】(repl_backlog_buffer),即一个FIFO的队列,默认大小1M。该缓冲区的作用是,当主节点有修改数据的操作时,除了将该操作发送给从节点,也会记录在该缓冲区。并更新主节点的同步数据偏移量,即1.1图中的【master_repl_offset】;

2,从节点每秒钟上报自身的的复制偏移量给主节点;

3,当从节点宕机并重启后,向主节点发送【部分数据同步】请求,该请求中包含从节点当前的,如果主节点的【复制积压缓冲区】的偏移量包含从节点发送的【复制数据偏移量】,则直接从【复制数据偏移量】开始向从节点传输数据,如果不包含,则升级为【全量数据同步】。

 2,主从架构优化

        上面描述的简单【主-从】架构有个明显的缺点,为保证数据稳定性,如果使用【一主多从】架构,从节点在启动时,主从数据同步会使得主节点压力过大。可以将【一主多从】(即:主-从)优化为【主-从-从】架构,即从节点的主节点也是从节点,如图:

        从节点的数据同步压力给到从节点,主节点只需同步少量从节点即可。

        注意:上述【主-从】或【主-从-从】架构,生产中是可以直接使用的。一般主从架构都是为了减轻单节点压力,比如读写分离:主节点写,从节点读。但单纯的主从架构读写分离有明显的弊端:

        1,数据同步不及时,读取的可能是过期数据;

        2,主节点宕机,需人为提高从节点等级变为主节点。

故Redis在主从架构下提供了【哨兵】机制,解决了这些问题,将在下章讲解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙系统开发快速入门教程

一、开发环境准备 1. 下载并安装DevEco Studio DevEco Studio是华为官方提供的鸿蒙应用开发IDE,集成了开发、调试、模拟运行等功能,是鸿蒙开发的首要工具。 下载地址:前往华为开发者官网下载DevEco Studio。安装步骤:按照官方提…

类文件结构

文章目录 类文件结构字节码Class 文件结构总结魔数(Magic Number)Class 文件版本号(Minor&Major Version)常量池(Constant Pool)访问标志(Access Flags)当前类(This Class)、父类…

Luminar Neo v1.21.0.13934 图像编辑软件绿色便携版

skylum Luminar Neo 是一款由未来 AI 技术驱动的创意图像编辑器。并且支持微软Windows及苹果Mac OX系统,它使创作者能够将他们最大胆的想法变为现实并乐在其中。借助 Luminar Neo 领先的 AI 技术和灵活的工作流程,完成创意任务并获得专业品质的编辑结果。…

Python_函数式编程(内存管理机制)

将压缩文件减压,可以看到有很多文件,主要关心两个(Include、Objects)在Include目录下object.h中可以查看创建对象的结构体。 在创建对象时,每个对象至少内部4个值,PyObject结构体(上一个对象、下一个对象、…

Docker-Consul概述以及集群环境搭建

文章目录 一、Docker consul概述二、consul 部署1.consul服务器2.registrator服务器(客户端)2.consul-template(在consul服务器)3.consul 多节点 一、Docker consul概述 容器服务更新与发现:先发现再更新,…

51单片机快速入门之 LED点阵 结合74hc595 的应用 2024/10/16

51单片机快速入门之 LED点阵 结合74hc595 的应用 74HC595是一种常用的数字电路芯片,具有串行输入并行输出的功能。它主要由两个部分组成:一个8位的移位寄存器和一个8位的存储寄存器。数据通过串行输入管脚(DS)逐位输入&#xff0…

再Android10上实现检测AHD摄像头是否接入

项目有个需要,需要知道tp9951是否接入AHD摄像头 1,驱动层可以通过读取寄存器的值来检测是否接入AHD摄像头 tp9951_write_reg(0x40, 0x00); //select decoder page tp9951_write_reg(0x41, ch); val tp9951_read_reg(TP_INPUT_STATUS_REG);…

通过华为鲲鹏认证的软件产品如何助力信创产业

软件通过华为鲲鹏认证与信创产业有着密切的联系。鲲鹏认证是华为推动信创产业发展的一项重要举措,通过该认证,软件可以在华为的生态系统中实现更好的兼容性和性能优化,从而推动信创产业的全面发展和国产化替代。 鲲鹏认证的定义和重要性 鲲鹏…

python基于大数据的电影市场预测分析

一、摘要 智慧是改变生活和生产的一种来源,那么智慧的体现更大程度上是对于软件技术的改变。当今社会,好的思路,好的创新方式往往是改变人们生活的一种来源。最常见最直接的形式就是各种软件的创始思路,京东因为非典的流行才能够…

[全国/全省/全市]初赛知识点复习大汇总

目录 计算机结构与组成原理 计算机发展及应用 1、第一台电子计算机的诞生: ENIAC 2、第一台具有存储程序功能的计算机:EDVAC。 图灵 计算机发展阶段 世界上最快的超级计算机 计算机应用 计算机保护知识产权 计算机病毒 硬件系统的组成 概述 …

分享一个图片RGB以及16进制颜色提取的在线网站

IMAGECOLORPICKER.com 网站链接:传送门呢 可以在线上传自己的图片,然后识别图片的颜色,比较方便。

2024年第九届数维杯大学生数学建模挑战赛赛题和数维杯国际数学建模 LaTeX 模板

2024年数维杯国际大学生数学建模挑战赛参赛规则 数维杯大学生数学建模竞赛每年分为两场,每年上半年为数维杯全国赛(5月下旬) ,下半年为数维杯国际挑战赛(11月下旬),已连续成功举办九届,2023年数维杯国际大学生数学建模挑战赛共有近…

【论文阅读】DL-SRIR综述2023

0. 摘要 SISR与DL的介绍 单图像超分辨率(SISR)是计算机视觉的一个重要研究领域,其目的是从低分辨率(LR)图像中恢复清晰、高分辨率(HR)图像。 随着深度学习理论和技术的快速发展,深度学习被引入到图像超分辨率(SR)领域,并在许多领域取得了远远超过传统方法的成果。 本文框架…

Mapbox GL 加载GeoServer底图服务器的WMS source

貌似加载有点慢啊!! 1 这是底图 2 这是加载geoserver中的地图效果 3源码 3.1 geoserver中的网络请求 http://192.168.10.10:8080/geoserver/ne/wms?SERVICEWMS&VERSION1.1.1&REQUESTGetMap&formatimage/png&TRANSPARENTtrue&STYL…

ImportError: /../lib/libstdc++.so.6: version `GLIBCXX_3.4.29解决方案

今天跑实验遇到了一个头疼的报错,完全看不懂,上网查了一下成功解决,但是网上的指令没法直接拿来用,所以在这里记录一下自己的解决方案。 报错信息: Traceback (most recent call last):File "/home/shizhiyuan/c…

数据结构 —— 树和二叉树简介

目录 0.前言 1.树的认识 什么是树 树的相关概念 树的表示 孩子兄弟表示法 2.二叉树的认识 什么是二叉树 特殊的二叉树 满二叉树 完全二叉树 二叉树的性质 性质一 性质二 性质三 二叉树的存储 顺序存储 链式存储 0.前言 笔者我之前讲解的数据结构都是线性…

OceanBase 的写盘与传统数据库有什么不同?

背景 在数据库开发过程中,“写盘”是一项核心操作,即将内存中暂存的数据安全地转储到磁盘上。在诸如MySQL这样的传统数据库管理系统中,写盘主要有以下几步:首先将数据写入缓存池;其次,为了确保数据的完整性…

深入理解Qt中的QTableView、Model与Delegate机制

文章目录 显示效果QTableViewModel(模型)Delegate(委托)ITEM控件主函数调用项目下载在Qt中,视图(View)、模型(Model)和委托(Delegate)机制是一种非常强大的架构,它们实现了MVC(模型-视图-控制器)设计模式。这种架构分离了数据存储(模型)、数据展示(视图)和数据操作(委托),使…

LabVIEW风机滚动轴承监测系统

矿井主通风机作为矿井中最重要的通风设备,一旦出现故障,不仅会影响矿井内的空气质量,还可能引发安全事故。研究表明,通风机中约30%的故障是由轴承问题引起的。因此,能够实时监控矿井主通风机轴承状态的系统&#xff0c…

Java基础(6)

深拷贝和浅拷贝区别了解吗?什么是引用拷贝?关于深拷贝和浅拷贝区别,我这里先给结论:浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部…