在 Redis 的高可用架构中,Cluster 与 Sentinel 分别解决什么问题?它们的节点角色、数据分布和故障转移机制有何不同?
考察说明
考查对 Redis 两种高可用方案的架构理解与适用场景辨析
回答思路
- 【回答框架 1】Sentinel 模式是主从架构的高可用方案,核心由 Sentinel 进程监控主从节点,通过投票机制在主机故障时选举新主并通知客户端。它只负责故障转移,不承担数据分片,数据仍存储在单一主节点上,写能力受限于单机。
- 【回答框架 2】Cluster 模式是分布式数据分片方案,采用无中心化架构,通过哈希槽(16384个)将数据分散到多个主节点,每个主节点可带从节点用于高可用。当主节点故障时,其从节点自动提升。Cluster 同时解决了容量扩展和单点故障问题。
- 【回答框架 3】两者主要区别:Sentinel 面向主从架构的高可用,数据不分区;Cluster 面向数据分片的分布式扩展,且自带高可用。Sentinel 适合数据量小、需要自动故障转移的场景;Cluster 适合数据量大、需要水平扩展的场景。
- 【回答框架 4】故障转移机制上,Sentinel 通过主观下线(SDOWN)和客观下线(ODOWN)以及选举算法实现;Cluster 中每个主节点负责一部分槽位,从节点通过复制进行数据同步,故障时由从节点接管槽位。
- 【关键点 1】Sentinel 解决高可用,主从架构,数据不分区
- 【关键点 2】Cluster 解决分布式扩展,数据分片,槽位分配
- 【关键点 3】Sentinel 故障转移基于投票,Cluster 基于从节点提升
- 【关键点 4】Cluster 支持多主多从,Sentinel 通常一主多从
- 【关键点 5】选择依据:数据量与扩展性需求
- 【易错点 1】误认为 Sentinel 也支持数据分片
- 【易错点 2】忽略 Cluster 中槽位对 key 分布的影响
- 【易错点 3】将两者混为一谈,未区分各自适用场景