高可用性说明
什么是 99.99%高可用性
如果你系统的服务端再全年99.99%的时间内都是可用的,那么这样的系统就叫做99.99%高可用性
Redis 不可用性
我们先来构想一个一主两从的Redis集群
在上述集群中,master node 专门用来写入数据,两个slave node 专门用来读取数据
思考一个问题:如果此时slave01节点挂掉之后对系统的可用性有影响吗?
答案是肯定不会的,因为此时还有一个slave node 可以提供查询服务
但是如果此时 master node宕掉了呢?
那么就会造成以下几个结果:
- 系统无法再往缓存中写入数据
- 所有的slave node 都没有master 来同步数据
- 大量的请求会直接访问到持久数据层,持久层压力陡然增大,有可能导致数据库宕机
那么此时的Redis 集群实际上是不可用的
Redis高可用性如何保障
Redis 高可用架构,叫做故障转移,failover,也可以叫做主备切换。
简单来说当从机识别到master node 宕机之后,会由一个slave node 自动升级为master node 继续提供写入数据以及向其余slave node 同步数据的操作,等master node 重启或者故障排除后,继续以slave node 的身份加入到集群中,这样在一定程度上保证了redis 集群的高可用性
如何实现主备切换(Redis的哨兵机制)
Redis的哨兵机制依托于哨兵节点(Sentinal node),该节点作用有两个
- 监听master node 的存活状态
- 当sentinal node 监听到master node 状态异常时,会主动"提拔"一个slave node升级为 master node