Redis提供了三种集群方式,下面我重点详解Redis三种集群方式的原理及优缺点等区别@mikechen
Redis主从复制模式
1.Redis主从复制定义
主从模式是三种模式中最简单的,主从模式指的是使用一个Redis实例作为主机,其余的实例作为备份机,主机和从机的数据完全一致。
如下图所示:
主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取,也就是说客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。
2.Redis主从复制工作原理
- 当slave启动后主动向master发送SYNC命令;
- master接收到SYNC命令后在后台保存快照和缓存保存快照这段时间的命令,然后将保存的快照文件和缓存的命令发送给slave;
- slave接收到快照文件和命令后加载快照文件和缓存的执行命令;
- 复制初始化后,master每次接收到的写命令都会同步发送给slave,保证主从数据一致性。
3.Redis主从复制优缺点
Redis主从复制优点:做到读写分离,提高服务器性能;
Redis主从复制缺点:在主从模式中,一旦Master节点由于故障不能提供服务,需要人工将Slave节点晋升为Master节点。
Redis哨兵模式
1.为什么需要哨兵模式?
刚刚上面讲到了主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。
如下图所示:
哨兵模式由一个或多个Sentinel实例组成的Sentinel系统,它可以监视所有的Master节点和Slave节点,并在被监视的Master节点进入下线状态时,自动将下线Master服务器。
2.哨兵模式工作原理
当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。
如下图所示:
- 哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。
- 同时哨兵节点之间也互相通信,交换对主从节点的监控状况。
- 每隔1秒每个哨兵会向整个集群:Master主服务器+Slave从服务器+其他Sentinel(哨兵)进程,发送一次ping命令做一次心跳检测。
3.哨兵模式的优缺点
哨兵模式优点:最大的优点就是主从可以自动切换,系统更健壮,可用性更高;
哨兵模式缺点:最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本;
Redis集群模式
1.为什么需要Redis集群模式
哨兵模式基于主从模式,实现读写分离,它还可以自动切换,系统可用性更高。但是它每个节点存储的数据是一样的,浪费内存,因此在Redis3.0后Cluster集群应运而生。
Redis Cluster是一种服务器Sharding技术(分片和路由都是在服务端实现),采用多主多从,每一个分区都是由一个Redis主机和多个从机组成,片区和片区之间是相互平行的。
2.Redis集群模式原理
在Redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383,还有一个就是cluster。
如下图所示:
当我们的存取的时候Redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽。
通过这个值去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。
为了保证高可用,RedisCluster集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。
Redis集群模式应用
主要是针对海量数据+高并发+高可用的海量数据场景,Redis集群模式的性能和高可用性均优于哨兵模式。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》