Redis提供了三种集群方式。接下来我将着重详细讲解三种Redis集群方式的原理和优缺点@mikechen目录[**]()Redis主从复制模式Redissentinel模式Redis集群模式Redis主从复制模式1.Redis主从复制定义主从模式是三种模式中最简单的。instance的实例作为备机,master机和slave机的数据是完全一样的。如下图所示:主机支持数据写入和读取等各种操作,而从机只支持与主机进行数据同步和读取,也就是说客户端可以向主机写入数据,主机自动将数据的写操作同步到slave。2、Redis主从复制的工作原理slave启动时主动向master发送SYNC命令;master收到SYNC命令后保存快照,并在后台缓存保存快照的命令,然后将保存的快照文件和缓存的命令发送给slave;从机接收到快照文件和命令后,加载快照文件和缓存的执行命令;复制初始化后,master收到的每条写命令都会同步发送给slave,保证主从数据的一致性。三、Redis主从复制的优缺点Redis主从复制的优点:实现读写分离,提高服务器性能;晋升为主节点。Redis哨兵模式1、为什么需要哨兵模式?刚才提到了主从模式。当主服务器宕机时,需要手动将一台从服务器切换为主服务器。人工干预费力费力。为了解决这个问题,哨兵模式出现了。如下图所示:Sentinel模式是由一个或多个Sentinel实例组成的Sentinel系统,可以监控所有的Master节点和Slave节点,并在被监控的Master节点下线时自动下线Master服务器。2.哨兵模式工作原理当主节点出现故障时,RedisSentinel自动完成故障发现和转移,并通知应用端实现高可用。如下图所示:哨兵机制建立多个哨兵节点(进程)共同监控数据节点的运行状态。同时哨兵节点之间也相互通信,交换主从节点的监控状态。每隔1秒,每个Sentinel都会向整个集群发送一个ping命令:Master主服务器+Slave从服务器+其他Sentinel(哨兵)进程进行一次心跳检测。3、哨兵模式的优缺点哨兵模式的优点:最大的优点是主从可以自动切换,系统更健壮,更易用;哨兵模式的缺点:最大的缺点是需要多维护一套哨兵模式,实现起来也比较容易,比较复杂,增加维护成本;Redis集群模式1、为什么需要Redis集群模式?哨兵模式是在主从模式的基础上实现读写分离的。还可以自动切换,系统可用性更高。但是每个节点存储的数据都是一样的,这样就浪费了内存,所以在Redis3.0之后就应运而生了Cluster集群。RedisCluster是一种服务器分片技术(分片和路由在服务器端实现),采用多主多从。每个分区由一个Redis主机和多个从机组成。在平行下。2、Redis集群模式的原理在Redis的每个节点上,有两个东西,一个是槽(slot),它的取值范围是:0-16383,另一个是cluster。如下图所示:当我们访问的时候,Redis会根据crc16算法得到一个结果,然后将结果取余16384,这样每个key都会对应一个编号在0-16383之间的hash槽。利用这个值找到对应槽位对应的节点,然后直接自动跳转到对应节点进行访问操作。RedisCluster集群为了保证高可用,引入了主从模式。一个主节点对应一个或多个从节点。当主节点宕机时,从节点将被启用。Redis集群模式的应用主要针对海量数据+高并发+高可用的场景。Redis集群模式的性能和高可用优于sentinel模式。作者简介陈睿|mikechen,10年+大厂架构经验,mikechen的互联网架构作者,专注于互联网架构技术。阅读mikechen的互联网架构JavaConcurrency|JVM|MySQL|Spring|Redis|Distributed|HighConcurrency更多技术文章
