Redis集群的三种模式——主从复制、哨兵模式、Cluster

一、主从复制模式

主数据库可进行读写,当写操作导致数据变化时会自动将数据同步到从数据库;
从数据库一般是只读的,并接受主数据库同步过来的数据

1、工作原理

在这里插入图片描述
(1)Slave从节点服务启动并连接到Master之后,它将主动发送一个SYNC命令
(2)Master服务主节点收到同步命令后,开始执行BGSAVE命令生成快照文件(RDB文件),并使用缓冲区记录此后执行的所有写命令
(3)Master服务主节点BGSAVE执行完后,向所有Slave从节点服务发送快照文件,并在发送期间继续记录被执行的写命令
(4)Slave从节点服务收到快照文件后丢弃所有旧数据,载入收到的快照
(5)Master服务主节点快照发送完毕后开始想Slave服务从节点发送缓冲区的写命令
(6)Slave服务从节点完成对快照的载入,开始后接收命令请求,并执行来自Master服务主节点缓冲区的写命令
(7)Master服务主节点每执行一个写命令就会向Slave服务从节点发送相同的写命令,Slave服务从节点接收并执行收到的写命令

主从刚刚连接的时候,进行全量同步,全量同步结束后,进行增量同步。
如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。但在2.8版本之后,断开重连。回见断开期间的命令传给Slave,进行增量同步。

当主服务器宕机后,需要手动把一台从服务器切换为主服务器。
这个需要人工干预,会赵成一段时间服务不可用。

2、特点

(1)读写分离,分担master的读写压力
(2)每台redis服务器存储的数据是相同的,浪费内存
(3)方便容灾恢复
(4)不具备自动容错和恢复功能,需人工介入
(5)较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂

二、哨兵模式

在这里插入图片描述

1、工作原理

(1)哨兵是一个独立的进程,会独立运行
(2)哨兵通过发送命令,让redis服务器返回监控其运行状态,包括主服务器和从服务器
(3)当哨兵检测到Master宕机,会自动将Slave切换成Master,然后通过发布订阅模式通知其他从服务器,修改配置文件,让他们切换主机
故障切换
假设Master宕机,哨兵1先检测到这个结果,系统不会马上进行failover【故障转移】过程,仅仅是哨兵1主观的认为服务器不可用,这个现象称为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。

2、特点

主从可以自动切换,具备自动容错和恢复功能

三、Cluster集群模式

在这里插入图片描述
每一个蓝色的圈都代表着一个redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作

Cluster集群模式采用的是分片技术

1、工作原理

Redis集群引入了哈希槽,一共有16384个哈希槽,集群每个节点负责一部分槽每个key通过CRC16检验后对16384取模,通过这个值,找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。
当要增加新的节点到集群里,就把原来的节点所拥有的槽分一部分给新的节点即可,当移除一个节点是,把这个节点上的槽移给其他槽,再把没有任何槽的这个节点移除即可(实现动态扩容)

集群如何判断节点是否挂掉了
在这里插入图片描述
集群中的每个节点至少一个备用的redis服务。这个备用的redis称为从节点(slave)
(1)每一个节点都存有这个集群所有主节点以及从节点的信息
(2)它们之间通过互相的ping-pong判断是否节点可以连接上
(3)如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点
(4)如果某个节点和所有从节点全部挂掉,我们集群就进入faill状态
(5)如果有一半以上的主节点宕机,那么我们集群同样进入fail状态
(6)投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时,认为当前master节点挂掉.

2、特点

每个redis节点存储不同的内容

 
 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cxh6863/article/details/108566181
posted @ 2021-05-31 17:06  姚春辉  阅读(1260)  评论(0编辑  收藏  举报