redis(二)redis的主从模式和集群模式
redis(二)redis的主从模式和集群模式
主从模式
redis的主从模式,指的是针对多台redis实例时候,只存在一台主服务器master,提供读写的功能,同时存在依附在这台主服务器的从服务器slaver,只提供读服务,且数据和主服务器保持一致。主服务器只能有一台,从服务器可以有多台,而且可以存在级联模式(从服务器下面也挂载从服务器)。主从的存在是为了分散访问量,提高访问可读性,同事保证数据的冗余和备份。
从服务器需要在配置文件中指定主服务的地址 slaveof 127.0.0.1 6379(主服务器的ip)。
redis的主从数据同步:
1、全量同步:
一般出现在从节点初始化阶段,全量数据需要从主节点上复制过来。
收到同步命令之后,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave,但是可能出现io剧增导致主服务器宕机。

2、增量同步:出现在从服务器初始化成功之后,开始正常提供服务之后,对主服务器发起增量同步,主服务器通过之前建立好的连接,发送写命令给从服务器。在增量同步失败的情况下,可以发起全量同步。
哨兵作用:
哨兵模式的出现,是为了弥补主服务突然宕机的情况下,能够及时选举出新的主服务器,使得服务依旧可用。 通过sentinel.conf配置文件进行配置 sentinel monitor mymast 192.168.110.133 6379 1 #主节点 名称 IP 端口号 选举次数
哨兵模式,指的是在原有主从的基础之上,增加sentinel系统来实时用来监听redis的健康状况。哨兵本质也是redis,用于监听redis服务,哨兵模式是集群模式,每个哨兵都是实时想其他哨兵,master,slaver发送心跳,来判断是都活着。当出现master不能访问的时候,采集其他哨兵对master的判断情况,当有半数以上的投票判断master死亡之后,哨兵集群会通过一定的算法来重新选举出一个slaver节点作为master,以保证整个reids服务的可用性。
选举结束之后,所有的配置文件都会发生修改。
正对死亡的reids实例,哨兵也会监听。当原来死亡的主服务器重新恢复之后,哨兵集群会把它当做从服务器加入到redis服务中。
自动切换ip漂移:
在主从模式下,客户端访问redis的服务器的ip地址是固定的,通过keepalived,可以使得客户端在redis故障切换之后,不需要修改ip,只需要访问固定的虚拟ip就可以。
集群模式
redis集群模式,指的是针对多个redis实例,去中心化,去中间件,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态,并且每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。
redis集群没有统一的ip入口,客户端与redis节点直连,不需要中间proxy层,客户端访问任意一个节点,都可以进入集群,访问集群的所有数据。节点内部使用PING-PONG机制来互相通信,当集群添加一个节点的时候,只需要连接集群中任意一个节点即可,不需要连接所有节点。(https://blog.csdn.net/nihao12323432/article/details/81204499)
当超过半数的master节点检测某个master节点失效时(通行超时),该节点才会失效,进行故障转移。因此必须要有3个以上的master才可以创建出集群。
如果一个master进行故障转移的时候,发现没有slaver来使用,那么整个集群fails。当整个集群有一半的master出现故障,无论有没有slaver,整个集群fails。
通过 redis-trib.rb create --replicas 1来创建集群。
哈希槽:
哈希槽的存在,是为了能快速找到key所在的节点。一个redis集群包含2^16=16384个哈希槽,会分配给各个节点。可以通过槽的分配来控制不同节点的数据量和请求数。哈希槽通过顺时针来分片,即一个节点顺时针到下一个几点之间的槽属于下一个节点。
每一个key,通过公式slot=CRC16(key)/16384来计算属于哪个槽。
扩容的时候,只需要动一个节点的数据即可。eg.A->B(顺时针),中间插入C节点,那么只修要迁移B的数据,重新分配到B和C中即可。
每一个redis实例节点都会保持元数据对应的哈希槽信息,数据会不断的同步。
redis(二)redis的主从模式和集群模式的更多相关文章
- Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
包括: Eclipse的下载 Eclipse的安装 Eclipse的使用 本地模式或集群模式 Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群 ...
- IntelliJ IDEA的下载、安装和WordCount的初步使用(本地模式和集群模式)
包括: IntelliJ IDEA的下载 IntelliJ IDEA的安装 IntelliJ IDEA中的scala插件安装 用SBT方式来创建工程 或 选择Scala方式来创建工程 本地模式或集群 ...
- Scala IDE for Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
包括: Scala IDE for Eclipse的下载 Scala IDE for Eclipse的安装 本地模式或集群模式 我们知道,对于开发而言,IDE是有很多个选择的版本.如我们大部分人经常 ...
- IntelliJ IDEA(Ultimate版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)
不多说,直接上干货! IntelliJ IDEA号称当前Java开发效率最高的IDE工具.IntelliJ IDEA有两个版本:社区版(Community)和旗舰版(Ultimate).社区版时免费的 ...
- IntelliJ IDEA(Community版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)
不多说,直接上干货! 对于初学者来说,建议你先玩玩这个免费的社区版,但是,一段时间,还是去玩专业版吧,这个很简单哈,学聪明点,去搞到途径激活!可以看我的博客. 包括: IntelliJ IDEA(Co ...
- 【集群】Redis的哨兵模式和集群模式
哨兵模式 哨兵模式是redis高可用的实现方式之一 使用一个或者多个哨兵(Sentinel)实例组成的系统,对redis节点进行监控,在主节点出现故障的情况下,能将从节点中的一个升级为主节点,进行故障 ...
- Centos7安装Nacos单机模式以及集群模式(包含nignx安装以及实现集群)的相关配置
Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos支持三种部署模式 单机模式 - 用于测试 ...
- Spring Cloud - Nacos注册中心入门单机模式及集群模式
近几年微服务很火,Spring Cloud提供了为服务领域的一整套解决方案.其中Spring Cloud Alibaba是我们SpringCloud的一个子项目,是提供微服务开发的一站式解决方案. 包 ...
- Redis搭建(四):Sharding集群模式
一. 方案 1. 介绍redis集群分为服务端集群(Cluster)和客户端分片(Sharding)服务端集群:redis3.0以上版本实现,使用哈希槽,计算key的CRC16结果再模16834.此处 ...
随机推荐
- POJ 1063 Flip and Shift 最详细的解题报告
题目来源:Flip and Shift 题目大意:一个椭圆形的环形容器中有黑色和白色两种盘子,问你是否可以将黑色的盘子连续的放在一起.你可以有以下两种操作: 1.顺时针旋转所有的盘子 2.顺时针旋转3 ...
- matlab中的静态变量与全局变量
matlab中的静态变量和全局变量 1.静态变量 在matlab中,和其他语言一样,函数中的变量一把都是局部变量,也就是说,在函数调用完毕后,变量就会被释放.但是有些时候回希望上次改变的变量在下一次调 ...
- P1776 宝物筛选
题目: 正文: 啊,多重背包真恶心... 一开始我是把多重背包改成了01背包,然鹅我当时是直接1个1个的往后摞的... 参见以下代码: for(int i=1;i<=n;++i){//平平无奇的 ...
- PyQt5模型视图委托
Model-View-Delegate 模型视图委托(MVD)是PyQt中特有的设计模式,类似MVC设计模式,将MVC设计模式中的Controller当做MVD中的Delegate,两者的概念基本相同 ...
- [jvm] -- 垃圾收集算法篇
垃圾收集算法 标记-清除算法 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象. 缺点: 效率问题: 空间问题(标记清除后会产生大量不连续的碎片) 复制算法 它可以将内存分为大小相同 ...
- Oracle常见错误以及解决方法
前言: 本博客为博主在开发中遇到的问题,为大家提供解决方法,如需转载,请注明来源,谢谢! 问题一: 第一次用PLSQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如x ...
- web自动化 -- Select(下拉选择框操作)
目标:(现在 select 这种已经很少了.一般都是 ul/li 或者 span/svg) 代码示例:
- Typora + PicGo + Gitee 实现图片自动上传到图床
1.下载并安装 Typora (windows版本) https://typora.io/#windows 2.设置图像 文件 -- 偏好设置 -- 图像 3.上步点击下载PicGo(app) 后,去 ...
- R语言基本绘图-plot参数:标题,坐标轴和颜色
标题 plot(c(1:2,2:4),main = "这是主标题",sub = "这是副标题",xlab = "这是x轴", ylab = ...
- python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数 ...