Redis三种部署方案图文详解

Redis三种部署方案图文详解
最新回答
"焉薰妝╪

2023-09-18 15:09:29

Redis的三种部署方案分别为单机模式、哨兵模式和集群模式,以下是详细介绍

单机模式

单机模式即所有服务连接一台Redis服务。此模式结构简单,部署成本低,适用于开发测试环境或数据量小、对可用性要求不高的场景。但存在明显缺陷,它不适用生产环境。一旦这台Redis服务器发生宕机,或者出现内存爆炸等问题,就会导致所有连接该Redis的服务发生缓存失效,进而可能引发雪崩效应,严重影响系统的稳定性和性能。

哨兵模式

哨兵模式是Redis官方推荐的高可用性(HA)解决方案。当采用Redis做Master - slave的高可用方案时,若master宕机,Redis本身及其很多客户端无法自动进行主备切换,而Redis - sentinel作为独立运行的进程,能监控多个master - slave集群,并在发现master宕机后进行切换。

哨兵模式具有多种功能实现:

  • Monitoring:监控Redis是否正常运行,实时掌握Redis服务状态。
  • Notification:通知application错误信息,让相关应用及时知晓Redis出现的异常。
  • Failover:当某个master死掉,选择另外一个slave升级为master,并更新master - slave关系,保障系统的持续运行。
  • Configuration provider:client通过sentinel获取Redis地址,并在failover时更新地址,确保客户端始终能连接到正确的Redis服务。

在故悄侍障检测方面,哨兵模式通过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个槽。