redis 主从,sentinel,cluster三者特性
一、redis的主从复制
1.特性:
主从其实就是一般包含一个主,一个或多个从,从节点从主节点复制数据,可以实现读写分离,主节点做写,从节点做读。
Redis 采用主从(可以多从)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。
2.主从节点的优缺点:
1)优点:
可以实现读写分离,主节点的数据会自动复制到从节点,分担主节点的压力
2)缺点:
当主节点宕机了,会导致部分数据未同步。也不具备容错和回复功能,无论主节点或者从节点宕机都需要等重启之后才能使用
二、redis哨兵模式
1.特性:
Redis Sentinel 是 2.8 版本后推出的原生高可用解决方案,其部署架构主要包括两部分:Redis Sentinel 集群和 Redis 数据集群。其实哨兵模式也是一种主从,只不过增加了哨兵的功能,用于监控主节点的状态,当主节点宕机之后会进行投票重新选出主节点。可以实现故障发现、故障自动转移、配置中心和客户端通知,但是sentinel必须为奇数(除了1),用来防止出现脑裂。
哨兵的宕机分为两种:主观宕机(我认为你掉线了)和客观宕机(我们认为你掉线了),当客观宕机了之后就会再选举一个从节点作为主节点。
2.redis哨兵模式的优缺点:
1)优点:
解决主从模式下的高可用
可以实现一套 Sentinel 监控一组 Redis 数据节点或多组数据节点
满足 Redis 大容量或高性能的业务需求
2)缺点:
资源浪费,Redis 数据节点中 slave 节点作为备份节点不提供服务
不能解决读写分离问题,实现起来相对复杂
部署相对于主从复杂
三、redis cluster集群模式
1.特性:
Redis Cluster 是 3.0 版后推出的 Redis 分布式集群解决方案,主要解决 Redis 分布式方面的需求。当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster 能起到很好的负载均衡的目的。Redis Cluster 集群节点最小配置 6 个节点以上(3 主 3 从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。Redis Cluster 采用虚拟槽分区,所有的键根据哈希函数映射到 0~16383 个整数槽内,每个节点负责维护一部分槽以及槽所印映射的键值数据。
2.redis cluster的优缺点:
1)优点:
所有Redis节点使用(PING机制)互联
集群中某个节点的是否失效,是由整个集群中超过半数的节点监测都失效,才能算真正的失效
客户端不需要proxy即可直接连接redis,应用程序中需要配置有全部的redis服务器IP
redis cluster把所有的redis node 平均映射到 0-16383个槽位(slot)上,读写需要到指定的redis node上进行操作,因此有多少个redis node相当于redis 并发扩展了多少倍,每个redis node 承担16384/N个槽位
Redis cluster预先分配16384个(slot)槽位,当需要在redis集群中写入一个key -value的时候,会使 用CRC16(key) mod 16384之后的值,决定将key写入值哪一个槽位从而决定写入哪一个Redis节点 上,从而有效解决单机瓶颈
2)缺点:
大多数时客户端性能会”降低”
命令无法跨节点使用:mget、keys、scan、flush、sinter等
客户端维护更复杂:SDK和应用本身消耗(例如更多的连接池)
不支持多个数据库︰集群模式下只有一个db 0
复制只支持一层∶不支持树形复制结构,不支持级联复制
Key事务和Lua支持有限∶操作的key必须在一个节点,Lua和事务无法跨节点使用
写于2022/6/12 20:27 weilan