Redis集群模式详解(3种常见集群模式)

Redis集群模式详解(3种常见集群模式)-mikechen

Redis提供了三种集群模式,下面我重点详解3种Redis种集群模式的原理及优缺点等区别@mikechen

Redis主从复制模式

1.Redis主从复制定义

Redis主从复制模式是一种常见的数据复制和高可用方案,它允许将一个Redis服务器(主节点)的数据复制到多个Redis服务器(从节点)。

如下图所示:

Redis集群模式详解(3种常见集群模式)-mikechen

主节点(Master): 主节点是数据的源头,负责接收写入操作并保存数据。

从节点(Slave): 从节点是主节点的副本,它复制主节点的数据并响应读取请求。

 

2.Redis主从复制工作原理

Redis集群模式详解(3种常见集群模式)-mikechen

复制过程:

    • 从节点在连接到主节点时发送复制请求,并请求从主节点复制数据。
    • 主节点接受从节点的复制请求,将自己的数据发送给从节点。
    • 从节点接收数据并将其保存为自己的副本。
    • 从节点在接收完整的数据副本后,与主节点保持持续的连接,并在主节点有新的数据更新时进行增量同步。

 

3.Redis主从复制优缺点

Redis主从复制优点:做到读写分离,提高服务器性能;

Redis主从复制缺点:在主从模式中,一旦Master节点由于故障不能提供服务,需要人工将Slave节点晋升为Master节点。

 

Redis哨兵模式

1.为什么需要哨兵模式?

刚刚上面讲到了主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。

如下图所示:

Redis集群模式详解(3种常见集群模式)-mikechen

Redis哨兵模式(Redis Sentinel)是用于实现高可用性(High Availability)的Redis架构。

它通过引入一组哨兵进程来监控和管理Redis服务器,以便在主节点(Master)发生故障时自动进行故障转移。

 

2.哨兵模式工作原理

当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。

如下图所示:

Redis集群模式详解(3种常见集群模式)-mikechen
  1. 哨兵(Sentinel): 哨兵是一组特殊的Redis进程,负责监控Redis服务器的健康状态。
  2. 主节点(Master): 主节点是处理写操作并保存数据的Redis服务器。
  3. 从节点(Slave): 从节点是主节点的副本,负责复制主节点的数据。
  4. 故障转移: 当哨兵检测到主节点不可用时,它会发起故障转移过程,将一个从节点提升为新的主节点。
  5. 选举机制: 哨兵使用选举机制来决定哪个从节点将被提升为新的主节点。
  6. 客户端访问: 客户端可以直接连接到主节点或通过哨兵进行访问。

 

3.配置Redis哨兵模式

涉及以下步骤:

  1. 配置哨兵的配置文件,指定监控的Redis服务器地址和端口。
  2. 启动哨兵进程。
  3. 在Redis服务器的配置文件中指定哨兵的地址和端口。
  4. 启动Redis服务器。
  5. 客户端可以连接到哨兵或主节点进行读写操作。

 

4.哨兵模式的优缺点

哨兵模式优点:最大的优点就是主从可以自动切换,系统更健壮,可用性更高;

哨兵模式缺点:最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本;

 

Redis集群模式

1.Redis集群模式简介

Redis集群模式是一种分布式架构,用于在多个Redis节点之间分片和复制数据,以实现高可用性和水平扩展。

 

2.Redis集群模式原理

在Redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383,还有一个就是cluster。

如下图所示:

Redis集群模式详解(3种常见集群模式)-mikechen

  1. 分片(Sharding): 在Redis集群中,数据被分片到多个节点上,每个节点只负责管理和存储部分数据,通过将数据分散到不同的节点上,实现数据的分布式存储。
  2. 复制(Replication): 每个分片可以有多个副本节点,主节点负责接收写操作并复制数据给副本节点。
  3. 节点间通信: Redis集群使用Gossip协议进行节点间的通信,每个节点都会与其他节点交换信息,包括节点的状态、数据迁移信息等。
  4. 故障转移: 当主节点发生故障时,Redis集群会自动进行故障转移,将一个副本节点提升为新的主节点。同时,集群会重新分片和迁移数据,以适应新的主节点。
  5. 客户端路由: 客户端可以连接到Redis集群,并通过集群的路由机制将请求发送到正确的节点。集群会根据数据的哈希值进行路由,以保证相同的数据总是被路由到同一个节点。

 

Redis集群模式应用

主要是针对海量数据+高并发+高可用的海量数据场景,Redis集群模式的性能和高可用性均优于哨兵模式。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获知最新一线技术干货!

评论交流
    说说你的看法