当前位置: 首页 > article >正文

Redis--集群搭建与主从复制原理

为了解决Redis的单点故障问题我们可以搭建一个Redis集群将数据备份到集群的其他节点上如果一个节点Redis宕机由其他节点顶上。主从集群搭建Redis的主从集群是一个“一主多从”的读写分离集群。集群种的Master节点负责处理读写请求而Slave节点只能处理读请求。所以要将集群搭建为读写分离模式。主要原因是对于数据库集群写操作压力小压力大多数来自读请求所以一个节点负责写操作即可。下面要搭建的读写分离集群包含一个Master和两个Slave。他们的端口号分别是6380、6381、6382。设置公共配置文件redis.conf在redis安装目录种mkdir一个目录命名为cluster。然后将redis.conf文件复制到cluster目录中。该文件会被其他配置文件包含所以该文件中需要设置每个Redis节点相同的公共的属性。修改这个redis.confmasterauth由于主从集群中每个主机都可能是Master所以最好不要设置密码验证属性requirepass。如果要设置一定要每个主机的密码都相同。此时每个配置文件中都要设置两个完全相同的属性requirepass和masterauth。requirepass指定当前主机的访问密码。masterauth指定当前Slave访问master时提供的访问密码用来验证slave的身份。repl-disable-tcp-nodelay该属性用于设置是否禁用TCP特性tcp-nodelay。设置yes则禁用表示关闭TCP_NODELAY启用Nagle算法此时master与slave间通信延迟增大使用TCP包数量会较少占用网络带宽小。设置no表示开启 TCP_NODELAY网络延迟变小使用TCP小包数量会较多实时性高占用网络带宽大。tcp-nodelay为了充分利用网络带宽TCP总是希望发送尽可能大的数据库。为了达到该目的TCP使用了一个名为Nagle算法。 Nagle算法的工作原理网络在接收到数据后并不直接发送而是等待数据量足够大时再一次性发送出去。这样网络上传输的有效数据比例就得到了大大提升无效数据传递极大减少节省网络带宽缓解网络压力。新建redis6380.conf、redis6381.conf、redis6382.confreplica-priority :给slave节点设置权重优先级数值越小越优先被选举为主节点0表示不参与选举。​ 启动三台Redis​ 分别使用redis6380.conf、redis6381.conf与redis6382.conf三个配置文件启动三台Redis。redis-server redis6380.conf redis-server redis6381.conf redis-server redis6382.conf​ 设置主从关系​ 分别使用客户端连接三台Redis然后通过slaveof命令指定6380的Redis为Master。注意slaveof命令在Redis重启之后主从关系会失效​ 查看状态信息​ 通过info replication 命令查看当前连接的Redis的状态信息。分级管理如果Redis集群中的slave较多数据同步会对Master形成较大的压力。此时可以对slave分级管理。设置方法让低级别的slave指定其slaveof的主机为上一级slave即可不过上一级slave的角色仍是slave。容灾冷处理在Redis集群中如果Master出现宕机怎么办有两种处理方式手工角色调整使Slave晋升为Master的冷处理。使用哨兵模式实现Redis集群的高可用HA即热处理。无论Master上是否宕机slave都可使用slaveof no one 将自己晋升为master。如果其原本就有下一级的slave那么就直接变成这些slave的master了。而原来master会时区这个新晋的slave。主从复制原理主从复制过程保存master地址slave接收到slaveof指令后slave会立即将心的master地址保存下来。建立连接slave定时与master建立socket连接。如果无法建立则会不断重试直到连接成功或接收到slaveof no one 指令。slave发送ping命令建立连接后slave会发送ping命令进行首次通信。如果slave没有收到master的回复则slave会主动断开连接下次的定时任务会尝试重连。对slave身份验证master收到slave的ping命令后不会立即对其回复而是先进行身份验证。如果验证失败则发消息拒绝连接如果验证成功则发送给slave连接成功消息。master持久化首次通信成功后slave会向master发送数据同步请求当master接收到请求后会fork一个子进程让子进程以异步方式立即进行持久化。数据发送持久化完毕后master再fork一个子进程让子今年初以异步方式将数据发给slaveslave将数据不断写入到本地持久化文件中。在数据同步过程中master仍在执行客户端的写操作。且不仅将新数据写入到master内存呢同时也写入到同步缓存。当master的持久化文件中的数据发送完毕后master会将同步缓存的数据发送给slave然后slave佳能其写入到本地持久化文件中。数据同步完成。slave恢复内存数据数据同步完成后slave读取持久化文件将其恢复到本地内存然后对外提供服务。持续增量复制之后master会持续不断的将新的数据以增量方式发送给slave以保证主从数据的一致性。数据同步演变过程sync同步Redis2.8之前首次通信成功后slave会向master发送sync数据同步请求。master就会将全部数据发送给slaveslave将数据保存到本地持久化文件内。这个过程称为全量复制。但是有一个问题在全量复制过程中可能会出现过程中断当网络恢复后slave与master重新连接成功此时slave向master又发送同步请求又开始从头全量复制。全量复制过程非常耗时期间网络抖动概率高。从头开始非常耗资源而且可能会出现长时间无法完成全量复制的情况。psync同步Redis2.8版本之后全量复制采用了psyncpartial sync不完全同步同步策略。当全量复制过程出现由于抖动而导致复制过程中断时当重新连接后复制过程可以“断点续传”。从断开位置继续复制不用从头再来。这就提高了性能。为了实现psync系统做了三个变化复制偏移量系统为每个要传送的数据进行了编号编号从0开始每个字节一个编号。此编号称为复制偏移量。参与复制的主从节点都会维护该复制偏移量offset。master每发送一个字节数据就会累计可以通过info replication 命令查看 master_repl_offset 属性。同时slave会定时向master 上报自身已完成的复制偏移量所以master也会保存slave的复制偏移量。slave在接收到master的数据后也会累计接收的偏移量。通过info replication 的slave_repl_offset 查看。主节点复制ID当master启动后会生成一个40位的字符串作为他的复制id。此id是在进行数据同步时slave识别master使用的。通过info replication 的master_replid 属性查看。复制积压缓冲区当master连接slave时在master中会创建并维护一个队列backlog默认1MB该队列称为复制积压缓存区。master接收到写操作数据会先写入master主存写入到master为每个slave配置的发送缓存还会写入到复制挤压缓冲区。作用是保存最近操作的数据以备”断点续传“时做数据补偿防止数据丢失。psync同步过程psync存在的问题数据同步过程中若slave重启slave保存master的id和续传offset都会消失“断点续传”将无法进行从而只能进行全量复制导致资源浪费。数据同步过程中master宕机或slave“易主”导致slave要从新的master进行全量复制造成资源浪费。psync的改进Redis4.0同源增量同步策略解决slave重启问题针对“salve重启后master的id丢失问题”psync将maste的rid直接写入到slave的持久化文件。slave重启后从本地文件获取master的id然后向master提交获取复制偏移量的请求。master根据复制偏移量开始向slave进行“断点续传”。解决slave易主问题这个问题的本质是新的master的id和slave提交的psync的原master的id不一致。如果新master能够识别出slave发送给master的psync请求那么就应该进行“断点续传”。新master中恰好保存了原master的id。所以当slave晋升为新master后接收到了给原master发送的同步请求新master也能进行处理。无盘操作Redis6.0 提出了“无盘全量同步”和“无盘加载”策略避免了耗时io操作。说人话就是不写入持久化文件了直接进行数据同步。无盘全量同步master的主进程fork出子进程直接将内存中的数据发给slave不经过磁盘。无盘加载slave接收到master发来的数据后不写入磁盘文件而是直接写入内存这样就能快速完成数据恢复。共享复制积压缓冲区Redis7.0 让所有slave的发送缓冲区共享复制积压缓冲区。这使得复制积压缓冲区的作用除了保障数据安全外还充分利用了复制积压缓冲区。文章转载自E_STOP原文链接https://www.cnblogs.com/alineverstop/p/19985718体验地址http://www.jnpfsoft.com/?from58

相关文章:

Redis--集群搭建与主从复制原理

为了解决Redis的单点故障问题,我们可以搭建一个Redis集群,将数据备份到集群的其他节点上,如果一个节点Redis宕机,由其他节点顶上。 主从集群搭建 Redis的主从集群是一个“一主多从”的读写分离集群。集群种的Master节点负责处理…...

低轨卫星网络中的Web服务韧性优化与辐射感知路由技术

1. 低轨卫星网络中的Web服务韧性挑战近地轨道(LEO)卫星网络正在重塑全球互联网基础设施格局。SpaceX的Starlink和亚马逊的Project Kuiper等大型星座计划,通过数千颗低轨卫星与地面云计算设施的深度整合,将网络覆盖扩展至偏远地区、…...

C++编写的项目案例有哪些?

C 凭借高性能、贴近硬件及成熟的生态,广泛应用于对效率、稳定性和控制力要求极高的场景。典型项目案例主要集中在操作系统内核、3A 游戏引擎、高频交易系统及大型嵌入式设备中。以下是按技术领域划分的经典 C 项目案例及其核心特点:1. 操作系统与底层基础…...

relic.skill:基于四维架构与本地化AI的数字记忆保存实践

1. 项目概述:从“数字永生”到“灵魂锻造”最近在折腾一个叫relic.skill的项目,它不是什么新潮的AI应用,也不是一个简单的聊天机器人模板。我更喜欢把它理解为一个“灵魂锻造炉”。它的核心目标很纯粹:把那些你舍不得、放不下的东…...

【ROS2实战笔记-15】ros2bag 的深度应用:从数据回放到系统级离线分析

对于 ROS 2 开发者而言,ros2bag 的价值远不止于记录和回放话题数据。它更像是一个时间旅行工具,将机器人在真实环境中的每一次传感器感知、每一次控制决策、每一次节点间的通信,都完整地凝固下来。这种能力使得它成为离线调试、性能分析和回归…...

2026年885nm窄带滤光片将有何新突破?背后奥秘等你揭晓

在光学领域,885nm窄带滤光片一直扮演着重要角色,广泛应用于生物检测、激光系统等多个领域。随着科技的不断进步,2026年,885nm窄带滤光片有望迎来新的突破。下面,我们就以欧特光学为例,深入探讨这些突破背后…...

基于MCP协议的保险核保智能体:架构设计与工程实践

1. 项目概述:当保险遇上智能体,一次承保决策的深度重构最近在探索如何将大模型智能体(Agent)技术落地到具体的行业场景时,我遇到了一个非常有意思的项目:apifyforge/insurance-underwriting-intelligence-m…...

DELTA-OPR300血氧信号发生器:脑机接口血氧模块精准测试设备

血氧饱和度是脑机接口设备监测人体生理状态的重要指标之一,其采集精度直接影响设备对人体缺氧状态的判断,DELTA-OPR300血氧信号发生器作为Delta德尔塔仪器专为血氧测试研发的专用设备,以高精度光学模拟技术,为脑机接口血氧模块的校…...

WebMCP:构建统一AI模型网关,实现多LLM服务标准化调用

1. 项目概述:一个连接Web与AI的“万能适配器”如果你正在开发一个需要接入大语言模型(LLM)的Web应用,比如一个智能客服机器人、一个文档分析助手,或者一个创意写作工具,你可能会面临一个典型的“适配”难题…...

基于Scallop框架的智能对话机器人:神经符号AI的工程实践

1. 项目概述:一个基于Scallop框架的智能对话机器人最近在GitHub上闲逛,发现了一个挺有意思的项目,叫scallopbot。这个项目由开发者tashfeenahmed创建,本质上是一个基于Scallop框架构建的智能对话机器人。如果你对AI、聊天机器人或…...

美国出行距离数据集分析报告-2019年国家级人口流动与出行行为统计数据

美国出行距离数据集分析报告 引言与背景 在当今大数据时代,人口出行数据对于城市规划、交通管理、公共卫生等领域具有重要的研究价值和应用意义。美国出行距离数据集(Trips_by_Distance)提供了从2019年1月开始的国家级人口出行行为统计数据&a…...

2026.5月购机指南:性能强的游戏本五款重点推荐,ROG独占超一线性价比

一、背景信息行业趋势: 越来越多的游戏使用虚幻5引擎,画质提升的同时,对硬件要求也变高。特别是开启光线追踪后,显存需求大,8GB显存已基本不够用,需要12GB以上。关键硬件: RTX 5070Ti是当前游戏本上搭载的12GB显存显卡…...

数据倾斜的各种原因及处理方案

数据倾斜的本质是 Shuffle 过程中 key 分布极度不均,导致个别 Task 处理的数据量远超其他 Task,成为整个作业的短板。一、业务数据本身分布不均(热点 Key)例子:搜索日志中统计每个搜索词的点击量,像热门词&…...

工厂停产1小时亏8万?AI+软件集成,设备故障提前预警,停产零损失

做制造业的老板、设备经理,谁没踩过“设备突发故障”的坑?某汽车零部件厂,冲压生产线电机轴承突然卡死,全线停机12小时,直接损失超80万元,订单交付延迟还赔了违约金;某家具厂更冤,同…...

vue.js 课程自己编写小游戏

一、太空大战<template><div class"game" keydown"onKey" tabindex"0"><div class"score">分数&#xff1a;{{ score }}</div><!-- 子弹 --><divclass"bullet"v-for"(b, i) in bulle…...

聚焦:Perfect Corp. 利用 NVIDIA TensorRT 和 NVENC 实现个性化的数字化美妆体验

增强现实 (AR) 和 AI 通过提供从虚拟试用到 AI 驱动的造型推荐等超个性化体验&#xff0c;正在彻底改变美妆和时尚行业。这些创新解决了一个长期难题&#xff1a;弥合数字购物与店内体验之间的差距。它们可以帮助消费者做出自信的购买决策&#xff0c;而无需亲自尝试产品。 实…...

AI大模型赋能财务小白:提升效率与风险防控收藏指南

本文探讨了如何利用GPT、Kimi、DEEPSEEK等免费AI通用大模型工具提升财务工作效率&#xff0c;涵盖财务报表编制、税务申报、数据分析、风险预警等实操应用。同时&#xff0c;详细阐述了数据脱敏、网络环境安全、权限管理等风险防控措施&#xff0c;帮助财务人员安全高效地运用A…...

2026年论文格式全攻略!GB/T 7713.1新国标解读+排版实战指南

2026年论文格式全攻略&#xff01;GB/T 7713.1新国标解读排版实战指南 论文格式到底是很多毕业生在提交论文前的"最后一关"&#xff0c;也是最容易被忽视的扣分项。我们对GB/T 7713.1-2025新国标及各高校最新格式要求进行了系统梳理&#xff0c;同时实测了知学术自动…...

DFT计算如何分析电子转移?

在DFT计算中&#xff0c;电子转移不是简单的电子从A跑到B&#xff0c;而是涉及电荷重新分布、成键极化、轨道相互作用、局域化特征等多层次的现象。单纯看总能量或几何结构&#xff0c;很难抓住本质。只有通过多维度波函数和电子密度分析&#xff0c;才能真正看清电子是怎么流动…...

Figma中文界面插件:让全球顶尖设计工具真正为你所用

Figma中文界面插件&#xff1a;让全球顶尖设计工具真正为你所用 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾经面对Figma的英文界面感到束手无策&#xff1f;那些复杂的专业…...

MacBook Touch Bar Windows驱动完全指南:解锁跨系统触控交互的终极方案

MacBook Touch Bar Windows驱动完全指南&#xff1a;解锁跨系统触控交互的终极方案 【免费下载链接】DFRDisplayKm Windows infrastructure support for Apple DFR (Touch Bar) 项目地址: https://gitcode.com/gh_mirrors/df/DFRDisplayKm 你是否在MacBook Pro上运行Win…...

第7章:流量获取与粉丝冷启动 /《程序员AI时代实现 直播知识付费实现月入100万的落地详细实战方案》

第7章:流量获取与粉丝冷启动 "我技术很好,但是根本没有人来看我直播怎么办?"这是在我微信私信和各个技术社群里被问得最多的一个问题。每次看到这个问题,我都能切身感受到那种无力感——自己明明在专业上花了这么多年时间,肚子里有东西,但就因为没人知道你的存…...

如何在Windows上快速安装和使用Poppler PDF处理工具

如何在Windows上快速安装和使用Poppler PDF处理工具 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上处理PDF文件而烦恼吗&…...

DM644x嵌入式Linux系统构建与优化实战

1. DM644x嵌入式Linux系统构建概述DM644x系列处理器是德州仪器(TI)推出的多媒体处理芯片&#xff0c;采用ARMDSP双核架构&#xff0c;广泛应用于视频监控、工业控制等领域。构建嵌入式Linux系统需要三个核心组件&#xff1a;引导程序(u-boot)、定制化Linux内核和根文件系统。与…...

基于OpenTelemetry与Prometheus构建Claude Code可观测性监控体系

1. 项目概述&#xff1a;为Claude Code构建可观测性监控体系如果你正在使用Claude Code进行AI辅助编程&#xff0c;并且对它的使用成本、效率以及内部运行状态感到好奇&#xff0c;那么今天分享的这个项目正是为你准备的。我最近花了不少时间&#xff0c;基于OpenTelemetry、Pr…...

AISMM模型首次公开拆解:4大维度、12项指标、1张决策图谱,专治“讲不清价值”顽疾

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AISMM模型与投资人沟通 核心价值对齐机制 AISMM&#xff08;AI-Driven Strategic Market Mapping&#xff09;模型通过结构化数据层、语义意图解析器和动态反馈环&#xff0c;将技术团队的工程语言实…...

AI Team OS:从被动助手到自主协作的AI团队操作系统深度解析

1. 项目概述&#xff1a;从“你问我答”到“自主运转”的AI团队操作系统如果你用过Claude Code、Cursor或者GitHub Copilot&#xff0c;那你一定熟悉这个场景&#xff1a;你输入一个指令&#xff0c;AI助手生成一段代码或一个建议&#xff0c;然后它就停在那里&#xff0c;等待…...

OpenClawUI:开源大模型现代化Web界面部署与实战指南

1. 项目概述&#xff1a;一个为开源AI模型打造的现代化Web界面最近在折腾本地部署大语言模型的朋友&#xff0c;估计都绕不开一个痛点&#xff1a;那些功能强大的开源模型&#xff0c;比如Llama、Qwen、Mistral&#xff0c;它们自带的交互方式要么是冷冰冰的命令行&#xff0c;…...

使用 Ollama 本地部署 Qwen3.5-4B 多模态模型

使用 Ollama 本地部署 Qwen3.5-4B 多模态模型 背景 对于大模型初学者来说&#xff0c;本地部署的第一步不一定是直接追求最大、最强的模型&#xff0c;而是先把完整流程跑通。一个比较完整的入门流程通常包括&#xff1a; 下载模型本地运行模型命令行对话API 调用图片输入测试查…...

嵌入式系统中ASN.1数据处理的优化策略与实践

1. ASN.1在嵌入式系统中的核心挑战在嵌入式系统开发中处理ASN.1数据面临着独特的挑战。与通用计算环境不同&#xff0c;嵌入式设备通常具有严格的内存限制、有限的处理能力和苛刻的实时性要求。让我们先看一个典型的场景&#xff1a;当设备需要处理X.509证书时&#xff0c;传统…...