一、Redis Cluster
在生产环境中,Redis单实例远远不能提供稳定高效、具备数据冗余和高可用能力的键值存储服务。虽然使用Redis的主从复制机制和持久化可以解决数据冗余备份的问题。但是如果没有人工干预,一旦主实例宕机,则整个Redis服务将无法恢复。Redis原生支持的Sentinel是使用最广泛的高可用架构,利用Sentinel,可以轻松构建具备容错能力的Redis服务。
由于Redis中所存储的数据增长速度很快,一个存储了大量数据(>16GB)的Redis实例的处理能力和内存容量可能会变成应用的瓶颈。随着Redis中数据集大小的增长,在进行持久化或主从复制时,也会越来越多地出现诸如延迟等的问题。对于这种情况,Redis Cluster技术可以将数据集通过分区的方式分布到多个Redis实例中。
二、Sentinel
Sentinel(哨兵)充当了Redis主实例和从实例的守卫者。因为单个哨兵本身也可能失效,所以一个哨兵显然不足以保证高可用。对主实例进行故障迁移的决策是基于仲裁系统的,所以至少需要3个哨兵进程才能构成一个健壮的分布式系统来持续地监控Redis主实例的状态。如果有多个哨兵进程检测到主实例下线,其中的一个哨兵进程会被选举出来负责推选一个从实例替代原来的主实例。
如果配置恰当,那么这整个的过程将会都变成是自动化的,无需人工干预!