redis集群的三种模式....
Posted 菜鸟要飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis集群的三种模式....相关的知识,希望对你有一定的参考价值。
设为 “星标”,和12万程序员一起成长!
设为 “星标”,和12万程序员一起成长!
今天我们来聊聊redis集群的三种模式。
画外音:事实上,这道题在小莱的面试经历中被问到的频率还是挺高的。
主从模式
1、架构图
2、集群介绍
1)主从模式里使用一个redis实例作为主机(master),其余多个实例作为备份机(slave);
2)master用来支持数据的写入和读取操作,而slave支持读取及master的数据同步;
3)在整个架构里,master和slave实例里的数据完全一致;
3、主从复制原理
全量同步
1) 当从节点启动时,会向主节点发送SYNC命令;
2) 主节点接收到SYNC命令后,开始在后台执行保存快照的命令生成RDB文件,并使用缓冲区记录此后执行的所有写命令;
3) 主节点快照完成后,将快照文件和所有缓存命令发送给集群内的从节点,并在发送期间继续记录被执行的写命令;
4) 主节点快照发送完毕后开始向从节点发送缓冲区中的写命令;
5) 从节点载入快照文件后,开始接收命令请求,执行接收到的主节点缓冲区的写命令。
增量同步
4、主节点故障处理方式
5、不支持高可用
哨兵模式
1、架构图
2、集群介绍
3、主节点故障处理方式/哨兵工作方式
1) 每个哨兵每秒向集群中的master、slave以及其他哨兵发送一个PING命令;
2) 如果某个实例距离最后一次有效回复ping命令的时间超过一定值,则会被标记为主观下线;
3) 如果master被标记为主观下线,那么其他正在监视master的哨兵以每秒的频率确认其确实进入主观下线状态,且数量达到一定值时,master会被标记为下线,然后通知其他的从服务器,修改配置文件,让它们切换主机;
4、扩容问题
常见的扩容方式有垂直和水平扩容两种方式:
垂直扩容:通过增加master内存来增加容量;
水平扩容:通过增加节点来进行扩容,即在当前基础上再增加一个master节点。
Redis cluster 模式
1、架构图
2、集群介绍
1) redis cluster模式采用了无中心节点的方式来实现,每个主节点都会与其它主节点保持连接。节点间通过gossip协议交换彼此的信息,同时每个主节点又有一个或多个从节点;
2) 客户端连接集群时,直接与redis集群的每个主节点连接,根据hash算法取模将key存储在不同的哈希槽上;
3) 在集群中采用数据分片的方式,将redis集群分为16384个哈希槽。如下图所示,这些哈希槽分别存储于三个主节点中:
Master1负责0~5460号哈希槽
Master2负责5461~10922号哈希槽
Master3负责10922~16383号哈希槽
4) 每个节点会保存一份数据分布表,节点会将自己的slot信息发送给其他节点,节点间不停的传递数据分布表;
3、主节点故障处理方式
4、扩容问题
Master1负责1365-5460
Master2负责6827-10922
Master3负责12288-16383
Master4负责0-1364,5461-6826,10923-12287
当集群中要删除节点时,只需要将节点中的所有哈希槽移动到其它节点,然后再移除空白(不包含任何哈希槽)的节点就可以了。
说个题外话,鸟哥是个比较喜欢折腾的程序员,业余喜欢开发自己网站、小程序、App等,这些东西统统离不开服务器!最近就围绕服务器的主题创建了一个微信群,喜欢玩服务器或者想自己开发一款产品的读者可以进来,相互学习交流!我也会时不时的带大家撸点和服务器相关的优惠券!不感兴趣,不喜欢折腾的就没必要凑着闹了!
发送【服务器】即可获取邀请链接
这是我部署的机器人,请勿调戏!
推荐阅读
以上是关于redis集群的三种模式....的主要内容,如果未能解决你的问题,请参考以下文章