心跳机制Redis

news2024/12/23 23:03:37

 进入命令传播阶段候,master与slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线

 master心跳:

 指令:PING

 周期:由repl-ping-slave-period决定,默认10秒

 作用:判断slave是否在线

 查询:INFO replication

获取slave最后一次连接时间间隔,lag项维持在0或1视为正常

 slave心跳任务

 指令:REPLCONF ACK {offset}

 周期:1秒

 作用1:汇报slave自己的复制偏移量,获取最新的数据变更指令

 作用2:判断master是否在线

心跳阶段注意事项

 当slave多数掉线,或延迟过高时,master为保障数据稳定性,将拒绝所有信息同步操作

slave数量少于2个,或者所有slave的延迟都大于等于10秒时,强制关闭master写功能,停止数据同步

 slave数量由slave发送REPLCONF ACK命令做确认

 slave延迟由slave发送REPLCONF ACK命令做确认

主从复制常见问题

频繁的全量复制(1)

伴随着系统的运行,master的数据量会越来越大,一旦master重启,runid将发生变化,会导致全部slave的全量复制操作

内部优化调整方案:

1. master内部创建master_replid变量,使用runid相同的策略生成,长度41位,并发送给所有slave

2. 在master关闭时执行命令 shutdown save,进行RDB持久化,将runid与offset保存到RDB文件中

 repl-id repl-offset

 通过redis-check-rdb命令可以查看该信息

3. master重启后加载RDB文件,恢复数据

重启后,将RDB文件中保存的repl-id与repl-offset加载到内存中

 master_repl_id = repl master_repl_offset = repl-offset

 通过info命令可以查看该信息

作用:

本机保存上次runid,重启后恢复该值,使所有slave认为还是之前的master

频繁的全量复制(2)

 问题现象

 网络环境不佳,出现网络中断,slave不提供服务

 问题原因

 复制缓冲区过小,断网后slave的offset越界,触发全量复制

 最终结果

 slave反复进行全量复制

 解决方案

 修改复制缓冲区大小

repl-backlog-size

 建议设置如下:

1. 测算从master到slave的重连平均时长second

2. 获取master平均每秒产生写命令数据总量write_size_per_second

3. 最优复制缓冲区空间 = 2 * second * write_size_per_second

频繁的网络中断(1)

 问题现象

 master的CPU占用过高 或 slave频繁断开连接

 问题原因

 slave每1秒发送REPLCONF ACK命令到master

 当slave接到了慢查询时(keys * ,hgetall等),会大量占用CPU性能

 master每1秒调用复制定时函数replicationCron(),比对slave发现长时间没有进行响应

 最终结果

 master各种资源(输出缓冲区、带宽、连接等)被严重占用

 解决方案

 通过设置合理的超时时间,确认是否释放slave

repl-timeout

该参数定义了超时时间的阈值(默认60秒),超过该值,释放slave

频繁的网络中断(2)

 问题现象

 slave与master连接断开

 问题原因

 master发送ping指令频度较低

 master设定超时时间较短

 ping指令在网络中存在丢包

 解决方案

 提高ping指令发送的频度

repl-ping-slave-period

超时时间repl-time的时间至少是ping指令频度的5到10倍,否则slave很容易判定超时

数据不一致

 问题现象

 多个slave获取相同数据不同步

 问题原因

 网络信息不同步,数据发送有延迟

 解决方案

 优化主从间的网络环境,通常放置在同一个机房部署,如使用阿里云等云服务器时要注意此现象

 监控主从节点延迟(通过offset)判断,如果slave延迟过大,暂时屏蔽程序对该slave的数据访问

slave-serve-stale-data yes|no

开启后仅响应info、slaveof等少数命令(慎用,除非对数据一致性要求很高)

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

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

相关文章

4|无线传感器网络与应用|无线传感器网络原理及方法-许毅版|第3章:无线传感器网络通信-3.1协议结构 3.2物理层|青岛科技大学|课堂笔记

第3章:无线传感器网络通信3.1协议结构3.1.1 OSI参考模型1.网络通信协议MAC层和物理层采用IEEE 802.15.4协议*(1)物理层wsn物理层负责信号的调制和数据的收发,传输介质:无线电、红外线、光波等。(2)数据链路层wsn数据链路层负责数据成帧、帧检…

光谱实验反射、透射光谱测量

标题反射、透射光谱测量的基本原理  暗背景/基线:Dark………………………………………………………………0%  (空)白参考:Reference…………………………………………………………100%  样品反射/透射光谱:Sampl…

【Redis】 数据结构:SDS、跳跃表等底层数据结构详解

【Redis】 数据结构:SDS、跳跃表等底层数据结构详解 文章目录【Redis】 数据结构:SDS、跳跃表等底层数据结构详解底层数据结构引入Redis数据结构 - 动态字符串 SDSSDS 概述SDS动态扩容为什么使用SDS小结Redis数据结构 - 整数集 intsetIntSet概述内存布局…

从JDK源码来看XXE的触发原理和对应的防御手段

前言 这几天继续在重写GadgetInspector工具,进一步的增强该自动化工具的source点和sink点,同时增强过程中的漏报和误报的问题。 这里主要是对其中有关于XXE中的两点sink进行几点分析。 sinks DocumentBuilder类 这个JDK中内置的类是一种的DOM型的解…

基础组件之内存池

内存池技术 操作系统在运行进程的过程中,会产生内存碎片,降低了内存的使用率。内存池技术就是为了解决/减少内存碎片的一种方法,内部底层的具体实现根据不同业务场景使用不要的方式,以下是一种好理解的方式,供大家一起…

光学分辨率光声显微镜中基于深度学习的运动校正算法

在这项研究中,我们提出了一种基于深度学习的方法来校正光学分辨率光声显微镜 (OR-PAM) 中的运动伪影。该方法是一种卷积神经网络,它从具有运动伪影的输入原始数据建立端到端映射,以输出校正后的图像。首先,我们进行了仿真研究&…

PYTHON爬虫基础

一、安装package 在使用爬虫前,需要先安装三个包,requests、BeautifulSoup、selenium。 输入如下代码,若无报错,则说明安装成功。 import requests from bs4 import BeautifulSoup import selenium二、Requests应用 了解了原理…

关于IDEA中Thread.activeCount()的问题记录

回顾: Thread类的activeCount()方法用于返回当前线程的线程组中活动线程的数量。返回的值只是一个估计值,因为当此方法遍历内部数据结构时,线程数可能会动态更改。总之它返回当前线程的线程组中活动线程的数量。 在研究多线程对同一变量的修…

【FAQ】集成分析服务的常见问题及解决方案

常见问题一:如何验证Analytics是否上报/接入成功?以及关键日志含义是什么? 在初始化Analytics SDK前添加SDK日志开关如下: HiAnalyticsTools.enableLog (); 2.初始化SDK代码如下: HiAnalyticsInstance instance Hi…

kettle安装部署_简单认识_Spoon勺子界面---大数据之kettle工作笔记002

然后我们来看一下这个kettle的安装,很简单,下载解压就可以了 上面的地址是官网很烂 下面的地址好一些 这个是官网可以看到很慢,很不友好 这个是下面那个地址,可以看到 最新的是9.0了,一般都用 一般都用8.2 这里下载这个就可以了 下载以后可以看到有个pdi

【代码随想录训练营】【Day19休息】【Day20】第六章|二叉树|654.最大二叉树|617.合并二叉树|700.二叉搜索树中的搜索|98.验证二叉搜索树

最大二叉树 题目详细:LeetCode.654 这道题在题目几乎就说明了解题的思路了: 创建一个根节点,其值为 nums 中的最大值;递归地在最大值左边的子数组上构建左子树;递归地在最大值右边的子数组上构建右子树;…

计算机系统基础知识

计算机的基本组成 计算机组成逻辑图 计算机部件作用 一级部件作用 运算器:计算机的执行部件,受控制器控制,执行算术运算或逻辑运算控制器:决定计算机运行过程的自动化。不仅能保证程序指令的正确执行,还能处理异常事…

12款适合小团队协作、任务管理和进度跟踪的在线任务管理的工具推荐?

国内外12款主流任务管理软件测评: 1.开发任务管理PingCode; 2.多合一项目任务管理Worktile;3.个人和小团队项目任务管理Notion; 4.企业任务管理平台SmartTask; 5.小团队任务管理Teambition;6.IT任务追踪管理Jira等。无论是做好工作任务管理还是个人任务管理,从来都不…

web网页如何实现响应式导航栏--移动端导航栏

背景: 一提到响应式导航栏,大家第一反应可能就是bootstrap响应式导航栏,这个响应式的一般是针对屏幕变小时,视口出现导航栏,可是,展示到移动端的时候,并没有变化??&#…

LabVIEW利用矢量量化直方图开发人脸识别

LabVIEW利用矢量量化直方图开发人脸识别通常,人脸识别系统会检查场景的静止图像或视频图像,然后使用存储的人脸数据库识别或验证场景中的一个或多个人。我程序专注于静止图像人脸识别,使用来自众所周知的人脸数据库的人脸图像,用于…

Prometheus之pushgateway

Pushgateway简介 Pushgateway是Prometheus监控系统中的一个重要组件,它采用被动push的方式获取数据,由应用主动将数据推送到pushgateway,然后Prometheus再从Pushgateway抓取数据。使用Pushgateway的主要原因是: Prometheus和targ…

Teradata 离场,企业数据分析平台如何应对变革?

近日大数据分析和数仓软件巨头 Teradata(TD)宣布基于中国商业环境的评估,退出在中国的直接运营。TD 是全球最大的专注于大数据分析、数仓和整合营销管理解决方案的供应商之一,其早在 1997 年就进入中国,巅峰期占据半数…

基于卷积神经网络图像风格迁移系统的设计与实现(flask系统)

1.摘要 Leon Gatys 等人研发的深度神经网络使用神经的表达来分离任意图片的内容和风格,为生成艺术图片提供一个神经算法。本文基于Style Transfer算法,使用风格成本函数训练CNN,用卷积神经网络提取图像特征,依次提取内容图像的内…

数据库面试——锁的12连问,赶紧收藏!

目录 1. 为什么需要加锁 2. InnoDB有哪些锁? 2.1 共享/排他锁 2.2 意向锁 2.3 记录锁(Record Lock) 2.4 间隙锁(Gap Lock) 2.5 临键锁(Next-Key Lock) 2.6 插入意向锁 2.7 自增锁 3. 什么是死锁?如…

从红队视角看AWD攻击

AWD的权限维持 攻防兼备AWD模式是一种综合考核参赛团队攻击、防御技术能力、即时策略的比赛模式。在攻防模式中,参赛队伍分别防守同样配置的虚拟靶机,并在有限的博弈时间内,找到其他战队的薄弱环节进行攻击,同时要对自己的靶机环…