Python中Redis的主从、哨兵和集群架构有什么区别?
redis 中主从、哨兵和集群这三个有什么区别 ?分别有什么优势?适用于什么场景?在实际工作如何选择?
Python中Redis的主从、哨兵和集群架构有什么区别?
哨兵是用来监控主从的健康状况的;集群里面也有主从模式,一般至少是 3 主 3 从,集群模式每个节点不需要全量存储
Redis的三种架构主要解决不同规模的可用性和扩展性问题。
主从复制是最基础的,一个主节点负责写,多个从节点同步数据并处理读请求。这提高了读吞吐和提供了数据备份,但主节点单点故障会导致服务不可用。代码里你连主节点就行,从节点通常只做备份和读分担。
哨兵模式在主从基础上加了监控和自动故障转移。哨兵进程监控主节点,主挂了就自动选个从节点提升为新主,并让其他从节点和新主同步。你的客户端需要连接哨兵来获取当前的主节点地址。这解决了主从的高可用问题,但写能力和存储容量还是受单主节点限制。
集群模式是分布式方案,数据被分片到多个主节点上(每个主可以带从节点)。它通过哈希槽分区,支持水平扩展写能力和存储容量,具备自动故障转移和负载均衡。客户端需要支持集群协议,能感知所有节点。
简单说:主从是读写分离备份,哨兵给主从加了自动故障转移,集群是分布式解决方案。根据你的数据量和并发需求选。
总结建议: 小项目用主从或哨兵,大数据量和高并发用集群。
主从往往是为了读写分离、backup 等目的, 哨兵可以检测主从健康, 主挂了可以把从提升为主, 集群往往是为了数据 sharding, 解决单台机器资源的上限的问题
主从为了数据备份,哨兵为了高可用,主挂了哨兵可以切换,集群则是因为单实例能力有限,搞多个分散压力。
主从:读写分离,备份
哨兵:监控,自动转移,选主
集群:数据 hash 分片,同时包含主从及哨兵特性
直接 cluster 完事
主从:故障切换 [failover]
哨兵:监控主服务状态,投票选择主节点
集群:均衡负载

