2023-09-18 15:09:29
Redis的三种部署方案分别为单机模式、哨兵模式和集群模式,以下是详细介绍:
单机模式
单机模式即所有服务连接一台Redis服务。此模式结构简单,部署成本低,适用于开发测试环境或数据量小、对可用性要求不高的场景。但存在明显缺陷,它不适用生产环境。一旦这台Redis服务器发生宕机,或者出现内存爆炸等问题,就会导致所有连接该Redis的服务发生缓存失效,进而可能引发雪崩效应,严重影响系统的稳定性和性能。
哨兵模式
哨兵模式是Redis官方推荐的高可用性(HA)解决方案。当采用Redis做Master - slave的高可用方案时,若master宕机,Redis本身及其很多客户端无法自动进行主备切换,而Redis - sentinel作为独立运行的进程,能监控多个master - slave集群,并在发现master宕机后进行切换。
哨兵模式具有多种功能实现:
在故悄侍障检测方面,哨兵模式通过ping - pong机制,引入sdown(主观下线)和odown(客观下线)机制。sdown是在is - master - down - after - milliseconds(可配置)时间内ping - pong失败,且sdown的slave不能升级为master;odown是超过一定数目(可配置)的sentinel认为sdown,odown只针对master;failover则是多数sentinel认敏运凳为odown时触发。
集群模式
随着业务量和数据量增长,单机模式和哨兵模式可能达到性能瓶颈,垂直扩容受机器桥旅限制,水平扩容涉及对应用的影响以及数据迁移中数据丢失风险。针对这些痛点,Redis3.0推出cluster分布式集群方案。
集群模式主要解决分片问题,把整个数据按照规则分成多个子集存储在多个不同节点上,每个节点负责自己整个数据的一部分。Redis Cluster采用哈希分区规则中的虚拟槽分区,槽的范围是0 ~ 16383,是集群内数据管理和迁移的基本单位。采用大范围的槽方便数据的拆分和集群的扩展,每个节点负责一定数量的槽。键根据哈希函数映射到0 ~ 16383,计算公式为slot = CRC16(key)&16383,每个实节点负责维护一部分槽以及槽所映射的键值数据。例如一个由五个节点构成的集群,每个节点平均大约负责3276个槽。