1 redis高可用策略
redis广泛应用于缓存的业务场景,当然也有将其当做持久化存储的nosql数据库使用,这些都不重要,重点是redis在提供服务的时候,是如何支持高可用的呢?
redis官方支持了四种策略:
- 数据持久化
- 主从同步
- 哨兵模式
- 集群
除以上姿势之外,我们自己在使用时还可以选择根据业务场景使用不同的redis实例(即传说中的不把所有鸡蛋放在一个篮子里)
接下来将针对redis的几种高可用策略进行简述说明
1.1 数据持久化
官方手册: Redis persistence
持久化是在高可用、一致性的场景中经常会看到的一种技术手段;
在高可用的场景中,数据的持久化主要是为了解决在服务出现问题(如宕机)之后,可以快速恢复并对外继续提供服务能力;
redis官方提供了两种持久化策略
- AOF: 将更新的操作命令记录在对应的日志文件中,在重启的时候采用“回放”策略,将所有的命令重新执行一遍来实现场景恢复
- RDB: 定时存储redis中的数据快照到数据文件中,在重启的时候,加载rdb文件,恢复所有的数据
简单来讲AOF记录的是操作动作,采用回放执行的机制进行恢复;RDB则相当于数据落盘,重新读取加载的机制进行恢复
注:AOF RDB可以一起工作,没有排他性
1.2 主从方式
虽然redis性能爆炸,但是单机依然存在性能瓶颈;当我们遇到单机的性能瓶颈的时候,一般怎么做?
没错,加机器
redis也支持多机服务,比如常见的一主多从策略:
- 主机:提供读写能力
- 从机:只提供读
针对绝大多数读多写少的场景,我们可以起多个redis实例,其中一个设置为主,提供所有的写请求;其他的实例则设置为从,客户端通过负载策略路由到不同的从redis,从而实现流量分摊;
同时也因为有多个实例,所以单台或几台实例下线,对整个服务的可用性影响并不会太大(及时摘除故障机器,其他的实例依然可以正常提供服务;当然前提是流量所示太大把其他的实例也打挂,那就gg了)
主从模式还有一个变种,叫做从从模式,主要是为了解决主redis的同步压力,改成主 -> 从,然后由一个从同步给其他的从实例,具体架构图如下
回复