1. Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 是一个强大的内存型存储,具有丰富的数据结构,使其可以应用于很多方面,包括作为数据库、缓存、消息队列等等。

2. Redis高可用方案

2.1Redis+keepalived高可用
2.1.1.基本构建与原理

Keepalived + VIP : 在redis master-slave上部署keepalived、redis instance存活检测脚本、以及告警通知脚本。当redis -master失效的时候,VIP从master上漂移到slave上,完成m-s角色和配置更改。客户端连接redis的参数中host设置的是VIP,整个切换过程对客户端透明。

2.1.2.应用架构图

2.1.3.优缺点对比

优点:

实现简单,成本低,整个切换过程对客户端透明。

缺点:

整个集群的最大吞吐量受限于redis单实例的处理能力,因而扩展能力较差。

2.2.Redis Sentinel高可用
2.2.1.基本构建与原理

Redis Sentinel是社区版本推出的原生高可用解决方案,其部署架构主要包括两部分:Redis Sentinel集群和Redis数据集群。其中Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现、故障自动转移、配置中心和客户端通知。Redis Sentinel的节点数量要满足2n+1(n>=1)的奇数个。

2.2.2.应用架构图

2.2.3.优缺点对比

优点:

1)Redis Sentinel集群部署简单。

2)能够解决Redis主从模式下的高可用切换问题。

缺点:

1) 部署相对Redis主从模式要复杂一些,原理理解更繁琐。

2) 2)资源浪费,Redis数据节点中slave节点作为备份节点不提供服务。

3)Redis Sentinel主要是针对Redis数据节点中的主节点的高可用切换,对Redis的数据节点做失败判定分为主观下线和客观下线两种,对于Redis的从节点有对节点做主观下线操作,并不执行故障转移。

2.3.Redis cluster集群高可用
2.3.1.基本构建与原理

RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题。

2.3.2.应用架构图

2.3.3.优缺点对比

优点:

1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

2)节点的fail是通过集群中超过半数的节点检测失效时才生效。

3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

3)redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value。

4)Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

缺点:

1)部署相对Redis主从模式要复杂,原理理解更繁琐。

2)集群采用分片模式,维护成本高。

最后修改日期: 2023年12月14日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。