Redis提供了三种集群方式,下面我重点详解Redis三种集群方式的原理及优缺点等区别@mikechen
Redis主从复制模式
1.Redis主从复制定义
Redis主从复制是指通过将一个Redis服务器的数据复制到多个从Redis服务器上,实现多个Redis服务器之间的数据同步。
Redis主从复制前者称为主节点(master),后者称为从节点(slave)。
如下图所示:
主从复制是单向的,只能由主节点到从节点,主从复制主要用于数据的备份和恢复,可以提高数据的安全性。
2.Redis主从复制工作原理
Redis主从复制流程,如下图所示:
主要包含如下步骤:
- Redis主从复制采用异步方式,从节点需要向主节点发送SYNC命令以触发复制操作。
- 主节点接收SYNC命令后将暂停接受客户端的新命令请求,并将本地所有数据写入RDB文件中,随后将RDB文件发送给从节点并同时开启一个缓冲区进行数据传输,等待从节点响应确认收到。
- 从节点接收到RDB文件后,将其保存到本地磁盘,并加载其中的数据,该文件保存了主节点的全量数据。
- 当从节点与主节点正常建立起连接时,主节点会将没有被从节点同步的命令以增量的方式发送给从节点,直到两者的数据完全一致为止。这样保证了从节点与主节点之间的数据同步。
Redis哨兵模式
1.什么是哨兵模式
Redis哨兵模式是Redis官方提供的高可用解决方案,主要负责监控Redis实例的状态、自动进行故障切换等。
如下图所示:
基于Redis Sentinel的集群模式通常由数个Redis Sentinel负责监控多个Redis Master-Slaver节点,并根据需要自动完成故障切换、主从切换等操作。
2.哨兵模式工作原理
如下图所示:
工作原理如下:
- 哨兵节点发现主节点失效
哨兵节点会定期向主节点发送ping命令,如果主节点长时间没有响应(比如10秒钟),则认为主节点已经失效。
- 哨兵节点选举新的主节点
当哨兵节点发现主节点失效后,它会向其他哨兵节点发送消息,尝试达成共识,选举出一个新的主节点。
- 哨兵节点更新客户端
一旦新的主节点被选举出来,哨兵节点会通过发布-订阅机制向客户端推送新的主节点信息,客户端可以根据此信息更新自己的配置,连接新的主节点。
- 哨兵节点监控主节点状态
一旦新的主节点上线,哨兵节点会定期监测主节点的状态,如果发现主节点再次失效,则重复以上步骤,选择一个新的主节点。
总结起来,Redis哨兵模式通过监控主节点的状态,并在主节点失效时及时选举新的主节点,实现了高可用性的分布式系统架构。
Redis集群模式
1.什么是Redis集群模式?
Redis 集群模式是Redis官方提供的分布式集群方案,支持水平扩展,适合大规模应用场景。
Redis Cluster集群是一种分布式Key-Value存储解决方案,用于处理大规模数据存储和实时高性能数据访问,它通过将数据分散到多个节点上,实现了自动分区、自动负载均衡和高可用性。
2.Redis集群模式原理
在Redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383,还有一个就是cluster。
如下图所示:
Redis Cluster集群的原理包括以下几个方面:
- 数据分片:集群将数据分为16384个槽(slot),每个节点可以处理0个或最多16384个槽。
- 请求路由:当客户端需要访问集群时,首先需要知道目标key所在的节点,集群提供了一种基于哈希值的请求路由方案,客户端可以根据key计算出对应的槽位。
- 自动故障恢复:集群中的节点发生故障时,其他节点可以自动接管故障节点的工作,继续提供服务。
- 多个key的操作:集群支持单个key的访问和多个key的操作,对于涉及多个key的操作,例如交集、并集、差集等,需要使用 Redis事务 来保证原子性。
Redis集群模式应用
主要是针对海量数据+高并发+高可用的海量数据场景,Redis集群模式的性能和高可用性均优于哨兵模式。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》