Redis的三种集群模式
1.主从复制
读写分离,减轻主节点压力,提升性能。从节点可以作为数据副本
配置简单,易于部署
主节点负责写操作,将写命令同步到从节点。
从节点接收主节点的写命令并执行,保证数据一致性
主从节点之间通过心跳机制保持连接,确保数据同步
适用于读多写少的场景,如新闻,博客。
数据备份和容灾,防止主节点数据丢失
2.哨兵模式
自动故障转移,当主节点故障时,自动选举新的主节点
监控主从节点状态,及时发现故障并报警
配置简单,易于管理
哨兵节点监控主从节点的状态,定期发送心跳包
当主节点故障时,哨兵节点通过投票机制选出新的主节点
通知客户端新的主节点地址,确保客户端正常访问
适用于可用性要求较高的场景,如电商,金融系统
在主从复制的基础上,需要自动故障转移功能
3. 集群模式
水平扩展,可以通过增加节点提高系统的处理能力
数据分片存储,提高数据的读写性能
自动故障转移,确保系统的高可用
Redis Cluster 将数据划分为16384个槽,每个节点负责一部分槽的数据
客户端可以直接访问任意节点,节点之间通过Gossip协议进行通信
当莫格节点故障时,集群会自动将该节点负责的槽迁移到其他节点
使用场景:
数据量较大,并发访问高的场景,如社交网络,游戏
需要分布式存储的场景
对比
模式 | 优点 | 缺点 |
---|---|---|
主从复制 | 配置简单,读写分离,数据备份 | 主从节点故障需要手动切换,扩展性有限 |
哨兵模式 | 自动故障转移,监控节点状态 | 无法水平扩展 |
集群模式 | 水平扩展,数据分片,自动故障转移 | 配置复杂,维护成本高 |
哨兵模式为什么不能水平扩展
- 哨兵模式的核心功能时故障监控和自动故障转移,并不具备数据分片和分布式存储的功能,无法像集群模式那样将数据分散到多个节点以上实现水平扩展
- 在哨兵模式下,数据是通过主从复制的方式在节点之间进行复制,所以数据在主从节点上都有完整的副本,这与水平拓展所需要的数据分片方式不同。