Redis笔记,涵盖了 Redis 所有知识点,拿走不谢( 三 )

十六、Redis数据同步策略A:全量同步(发送RDB快照) 
全量同步主要发生在Slave初始化阶段,当启动一台Slave时,它需要连接到Master,把Master数据都复制一份 。
 

  1. Slave连接上Master,发送sync命令给到Master 。
  2. Master执行bgsave,按照全量备份方式生成一份RDB快照,并用内存缓冲区记录此后执行的所有写命令 。
  3. Master向Slave发送RDB快照 。
  4. Slave收到RDB文件后,丢弃所有旧数据,并载入收到的快照文件 。
  5. Master发送完RDB快照就接着发缓冲区中的写命令 。
  6. Slave载入完RDB快照,就开始接收&执行Master发送过来的写命令 。
十七、Redis数据同步策略B:增量同步(发送写命令) 
Master每执行一个写命令就会向Slave发送相同的写命令,Slave接收&执行收到的写命令 。
十八、Redis主从复制
Redis笔记,涵盖了 Redis 所有知识点,拿走不谢

文章插图
 
主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步 。当然,如果有需要,slave 在任何时候都可以发起全量同步 。redis策略是,无论如何,首先会尝试进行增量同步,如不成功,再要求从机进行全量同步 。
主从复制,只是实现了容灾备份,不能故障转移,不是实现高可用 。
十九、Redis高可用方案A:哨兵模式+主动复制
Redis笔记,涵盖了 Redis 所有知识点,拿走不谢

文章插图
 
哨兵是什么?
  1. 哨兵是一个独立的进程 。
  2. 哨兵的作用主要有两个,A:通过心跳机制监控Redis服务器运行状态,包括Master和Slave 。B:当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的哨兵、slave,修改配置文件,让它们切换主机 。
故障切换过程是怎么样的?(failover)
  1. 当一个哨兵监测到Master宕机,系统并不会马上进行故障切换,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为“主观下线” 。
  2. 当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行故障切换 。
  3. 切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为“客观下线” 。
哨兵模式的优缺点是什么?
  1. 优点:实现了容灾备份和自动故障切换,是高可用方案 。
  2. 缺点:不好在线扩容(Slave可以随时配置多个,提高读并发,但Master只有一个,提高不了写并发),配置麻烦,只有一个主节点对外提供服务,没法支持很高的并发量 。
二十、Redis高可用方案B:Redis Cluster(集群架构) 
Redis笔记,涵盖了 Redis 所有知识点,拿走不谢

文章插图
 
Redis集群是一个由多个主从节点群组组成的分布式服务集群,他具有复制、高可用、分片特性,Redis集群不需要sentinel哨兵,也能完成节点移除和故障转移的功能,需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展;Redis集群的性能和高可用均优于之前版本的哨兵模式,且集群配置非常简单 。
故障切换过程是怎么样的?
  1. Redis的所有节点都会保存当前redis集群中的全部主从状态信息,并且每个节点都能够相互通信 。
  2. 当一个节点发生宕机,则集群中的其他节点通过心跳机制检查Redis节点是否宕机 。
  3. 当有半数以上的节点认为宕机,则认为主节点宕机,同时由Redis剩余的主节点进入选举机制,投票选举链接宕机的主节点的从机,实现故障迁移 。
  4. 集群中如果主机宕机,那么从机可以继续提供服务,当主机中没有从机时,则向其它主机借用多余的从机,继续提供服务,如果主机宕机时没有从机可用,则集群崩溃 。即:每个节点都至少保持是“一主一从” 。

  5. 推荐阅读