Redis-运维

转自 极客时间 Redis 亚风 原文视频:https://u.geekbang.org/lesson/535?article=681062

Redis 同步

Redis主从数据同步,主从第⼀次同步是全量同步

replicaof 主机 端口 #当前这个机器做Master的备份

在这里插入图片描述
master如何判断slave是不是第⼀次来同步数据:
Replication ld:简称replid,是数据集的标记,id⼀致则说明是同⼀数据集。每⼀个master都有唯⼀的replid,slave则会继承master节点的replid。
Offset:偏移量,随着记录在repl_baklog中的数据增多⽽逐渐增⼤。slave完成同步时也会记录当前同步的offset。
如果slave的offset⼩于master的offset,说明slave数据落后于master,需要更新。
因此slave做数据同步,必须向master声明⾃⼰的replication id 和offset,master才可以判断到底需要同步哪些数据。

如果slave重启后同步,会进⾏增量同步。

在这里插入图片描述

repl_baklog⼤⼩有上限,写满后会覆盖最早的数据。如果slave断开时间过久,导致数据被覆盖,则⽆法实现增量同步,只能再次全量同步。slave 和Master 始终保持着一点差距,也就是上面的Slave 节点追不上 Master 节点了,超过一圈,后面的数据就被重写了。

可以从以下⼏个⽅⾯来优化Redis主从集群
在master中配置repl-diskless-sync yes启⽤⽆磁盘复制(需要看网络带宽,作为了解不太实用),避免全量同步时的磁盘IO。
Redis单节点上的内存占⽤不要太⼤,减少RDB导致的过多磁盘IO
适当提⾼repl_baklog的⼤⼩,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步

⼀个master上的slave节点数量,如果实在是太多slave,则可以采⽤主-从-从链式结构,减少master压⼒。

在这里插入图片描述

哨兵

slave节点宕机恢复后可以找master节点同步数据,那master节点宕机怎么办?
Redis提供了哨兵(Sentinel)机制来实现主从集群的⾃动故障恢复。哨兵的结构和作⽤如下:
在这里插入图片描述
• 监控:Sentinel 会不断检查master和slave是否按预期⼯作
• ⾃动故障恢复:如果master故障,Sentinel会将⼀个slave提升为master。当
故障实例恢复后也以新的master为主
• 通知:Sentinel充当Redis客户端的服务发现来源,当集群发⽣故障转移时,
会将最新信息推送给Redis的客户端
Sentinel基于⼼跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:

上下线检测及选举
• 主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
• 客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。quorum值最好超过Sentinel实例数量的⼀半。⼀旦发现master故障,sentinel需要在salve中选择⼀个作为新的master,选择依据是这样的:
1) ⾸先会判断slave节点与master节点断开时间⻓短,如果超过指定值(down-after-milliseconds * 10)则会排除该slave节点
2) 然后判断slave节点的slave-priority值,越⼩优先级越⾼,如果是0则永不参与选举
3) 如果slave-prority⼀样,则判断slave节点的offset值,越⼤说明数据越新,优先级越⾼
4)最后判断slave节点的运⾏id⼤⼩,越⼩优先级越⾼
当选中了其中⼀个slave为新的master后(例如slave1),故障的转移的步骤如下:
1)sentinel给备选的slave1节点发送slaveof no one命令,让该节点成为master。
2) sentinel给所有其它slave发送slaveof ip port命令,让这些slave成为新master的从节点,开始从新的master上同步数据。
3)Sentinel将故障节点标记为slave(修改配置),当故障节点恢复后会⾃动成为新的master的slave节点。
sping 针对主从的应用

spring.redis.sentinel.master=mymaster
spring.redis.sentinel.node=ip:port,ip:port

连接Sentinel的时候需要指定这个bean
在这里插入图片描述
这⾥的ReadFrom是配置Redis的读取策略,是⼀个枚举,包括下⾯选择:
MASTER: 从主节点读取
MASTER_PREFERRED:优先从master节点读取,master不可⽤才读取replica
REPLICA: 从slave (replica)节点读取
REPLICA_PREFERRED:优先从slave (replica)节点读取,所有的slave都不可⽤才读取master

Redis 分片集群

主从和哨兵可以解决⾼可⽤、⾼并发读的问题。但是依然有两个问题没有解决:
• 海量数据存储问题
• ⾼并发写的问题
使⽤分⽚集群可以解决上述问题,分⽚集群特征:
• 集群中有多个master,每个master保存不同数据
• 每个master都可以有多个slave节点
• master之间通过ping监测彼此健康状态
• 客户端请求可以访问集群任意节点,最终都会被转发到正确节点

在这里插入图片描述
Redis会把每⼀个master节点映射到0~16383共16384个插槽 (hash slot)上,查看集群信息时就能看到:
在这里插入图片描述
数据key不是与节点绑定,⽽是与插槽绑定。redis会根据key的有效部分计算插槽值,分两种情况:
Key中包含{},且{}中⾄少包含1个字符,{}中的部分是有效部分
key中不包含{},整个key都是有效部分
例如:key是num,那么就根据num计算,如果是{a}num,则根据a计算。计算⽅式是利⽤CRC16算法得到⼀个hash值,然后对16384取余,得到的结果就是slot值。

cluster failover命令可以⼿动让集群中的某个master宕机,切换到执⾏cluster failover命令的slave节点,实现⽆感知的数据迁移。⼿动的failover⽀持三种不同模式:
• 缺省:默认的流程,如下面的图
不常用下面两个命令:
• force:省略了对offset的⼀致性校验(不管当前节点是否与Master有距离)
• takeover:直接执⾏第5歩,忽略数据⼀致性、忽略master状态和其它master的意⻅
在这里插入图片描述

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

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

相关文章

python括号的区别_Python中类-带括号与不带括号的区别

类不带括号我们叫赋值,带括号我们叫实例化。 什么是赋值? a7 ba id(7) 140726814208448 id(a) 140726814208448 id(b) 140726814208448 从上面例子中我们可以看出变量a赋值7、b赋值a,它们的内存地址都是相同的。 它们是指向了同一个内存地址&…

初中教师资格证计算机试讲教案模板,教案模板:教师资格证面试初中英语万能教案模板...

【摘要】授课是一门艺术,好的授课方式可以使学生举一反三,培养学生自主学习能力。此时,课前的教案准备工作就极为重要。那么如何写出一篇好的教案呢?考必过为大家精心整理了教案模板:教师资格证面试初中英语万能教案模…

idea yml文件不变成树叶_springboot获取配置文件的三种方式

hello,大家好,有今天没有写文章了,因为呢,最近,公司有点事情,需要我呢,搭建一个demo,框架呢是springbootActive实现消息的延时发送和定时发送功能,为了项目以后中使用到&…

python3.7代码_Centos7源代码安装python3.7,centos7,源码,python37

1、centos7默认安装python2.7,不需要卸载; 2、安装gcc; 3、安装依赖包: yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-deve…

小米相机摄像头测试软件,摄像头拍照效果测试

◆ 摄像头拍照效果评测摄像头已成为时下任何一款手机都应该有的基本设备了,经过几年的发展,目前主流智能手机所配备的摄像头俨然到达了动辄500W像素以上的级别,而旗舰产品基本都会配备一颗不失体面的800W像素以上的摄像头。小米手机也搭配了一…

电脑关闭计算机怎么重启计算机,教您电脑关机后总是重启怎么办

电脑关机后自动重启的问题,一直困扰一些朋友,通常就是关闭系统后,电脑又自己开机启动了,我们不得不拔掉电源或强制关机,要解决电脑无法关机变重启的问题就要找到原因然后解决,下面,小编讲处理电…

计算机技能节活动作文,技能节感想作文

技能节感想作文在日常学习、工作和生活中,大家都跟作文打过交道吧,作文可分为小学作文、中学作文、大学作文(论文)。那么你知道一篇好的作文该怎么写吗?下面是小编为大家收集的技能节感想作文,欢迎大家借鉴与参考,希望…

神舟笔记本电源管理软件_笔记本电脑是一直插着电源好,还是拔了电源好?

你说怎么好刚才写【图吧小白教程】散热常识 的时候参考了一些资料,为此咱跑了不少网站关注了不少公众号,这年头有意思,干啥都要关注微信,然后就能拿到资料,我寻思我写这么多文章也没打算给咱自己的微信公众号引流呢&am…

matlab中服从高斯分布的矩阵_一些张量的计算步骤matlab代码

Matlab工具箱Tensor Toolbox,安装链接如下CSDN-专业IT技术社区-登录​blog.csdn.net. ,这是我们定义的张量 ,matlab代码:%% %工具包:Tensor Toolbox clc clear all X1 1:12; X1 reshape(X1,[3,4]); X2 13:24; X2 reshape(X2,[3,4]); %如何用矩阵拼接…

徐波 博士 计算机,徐波教授:医工联合促进智能肿瘤学发展——探秘肿瘤精准治疗中的AI技术...

原标题:徐波教授:医工联合促进智能肿瘤学发展——探秘肿瘤精准治疗中的AI技术编者按:近年来,人工智能(AI)技术在医学领域得到广泛应用。在肿瘤精准治疗时代,AI技术的应用进一步促进了肿瘤患者个体化精准治疗。在第五届…

aspx 判断字符串是否为decimal_python 经典面试题:判断字符串括号是否闭合{}[]()...

前言经典面试题:判断一个字符串里面的括号是否闭合,如:{[{()}]()} 就是一个闭合的字符串。{{()}]} 这个里面 ([)] 括号不对称,这种就是不闭合。python判断闭合解决基本思路:先把左括号添加到一个列表里面,遇…

c++整理程序 dev_C编程从入门到实践:C语言开发工具详解(2)

DEV C是一款经典的轻量级C语言开发工具,其安装大小只有几十兆,并且具有图形视图界面,操作比较容易。在DEV C编码界面中可以使用复制和粘贴等命令,这提高了开发效率。2.3.1安装DEV C要安装DEV C ,步骤如下。(1)在百度中搜索DEV C安装包,双击可执行的exe文件进行安装,首先弹出选择…

@value注解_Java系列之注解

Java 注解(Annotation)又称之为 Java 标注、元数据,是 Java 1.5 之后加入的一种特殊语法,通过注解可以标注 Java 中的类、方法、属性、参数、包等,可以通过反射原理对这些元数据进行访问,注解的使用不会影响…

磁共振线圈分类_收藏:磁共振检查序列及临床应用总结

磁共振检查要用到序列,什么是磁共振序列(Sequence)呢? 序列,简单的讲是指具有一定带宽、一定幅度的射频脉冲与梯度脉冲的有机组合。而射频脉冲与梯度脉冲不同的组合方式构成不同的序列,不同的序列获得的图像有各自的特点。磁共振序…

css unchecked,详细介绍CSS中的伪选择器

说到伪选择器,真的让我体会到了CSS的无比强大,强大到自己貌似都不认识CSS了,有点C# 6.0中一些语法糖带给我们的震撼。。。首先我们可以在VS里面提前预览一下。可以看到,上面的伪类有很多很多,多的让我眼都快瞎了。。。…

matlab安装程序无法启动jvm_天呀!JVM居然还有2两种运行模式

概述JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机&…

boot idea无法识别spring_idea搭建springboot项目

Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程。它主要推崇的是消灭配置’,实现零配置。那么,如何在idea中创建一个springboot项目呢?一.在你建立的工程下创建 Module 选择Spr…

a*算法的时间复杂度_算法的时间和空间复杂度,就是这么简单

算法(Algorithm)算法是程序用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还…

筒灯智能驱动芯片作用_魅族发布Lipro智能吸顶灯与地脚灯 解决生活照明两大痛点...

1月5日,魅族高端智能家居品牌Lipro正式发布了首期六款健康照明产品以及两款配件,分别是智能吸顶灯、筒灯、灯泡、灯带、地脚灯、橱柜灯、无极调光面板和驱动电源。该系列产品全系搭载如然之光LED光源,在实用性、外观设计以及用料材质上&#…

python爬取豆瓣电影并分析_Python爬取豆瓣电影的短评数据并进行词云分析处理

前言 对于爬虫很不陌生,而爬虫最为经典的案例就是爬取豆瓣上面的电影数据了,今天小编就介绍一下如果爬取豆瓣上面电影影评,以《我不是药神》为例。 基本环境配置 版本:Python3.6 相关模块: (1)r…