Redis 哨兵
在Redis的Sentinel解决了由于主节点故障人工的将从节点你晋升为直接点的弊端。
主从复制存在的问题
Redis的主从复制模式可以将主节点的数据同步给从节点,其作用是:
- 作为主节点的备份,一旦主节点出现故障不可达的情况,从节点可以顶替主节点,并且保证数据不丢失(主从复制的最终一致性)。
- 从节点可以扩展主节点的读能力,一旦主节点不能支撑大并发的读操作,从节点可以在一定程度上为直接点分担读压力。
但是主从复制也带来了以下问题:
- 一旦主节点出现故障,需要手动的讲一个从节点晋升为主节点,同时需要修改应用方的主节点地址,还需命令其他从节点去复制新的主节点,整个过程都需要人工干预。
- 主节点的写能力和存储能力受到单机的限制。
Redis Sentinel
Redis Sentinel是一个分布式架构,其中包含若干个Sentinel节点和Redis数据节点,每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当它发现节点不可达时,会对节点做下线标识。如果被标识的是主节点,它还会和其他Sentinel节点进行“协商”,当大多数Sentinel节点都认为主节点不可达时,它们会选举出一个Sentinel节点来完成自动故障转移的工作,同时会将这个变化实时通知给Redis应用方。整个过程完全是自动的,不需要人工来介入,所以这套方案很有效地解决了Redis的高可用问题。