详解Redis集群的三种实现方案

admin 2023-11-05 699 阅读 0评论

Redis分布式存储的常见方案有:

1.「主从 (Master-Slave) 模式主从复制,读写分离,数据备份。
2.「哨兵 (Sentinel) 模式一主多从,哨兵监控,自动处理故障,容错和恢复。
3.「 集群 (Cluster) 模式多主多从,数据分片,在线扩容。

Redis集群切片的方式有:
1.「客户端分片」分片逻辑在Redis客户端实现,采用一致性哈希来决定Redis节点。
2.「中间件分片」借助中间件实现Redis节点的路由分派,根据路由规则将请求发送到正确的Redis节点上。

3. 「客户端服务端分片」Redis Cluster模式,客户端采用一致性哈希,服务端提供错误节点的重定向服务。


本文将详细介绍「Redis分布式存储的3种方案和「Redis集群切片的3种常见方式。


么是Redis集群

Redis集群是由多个redis实例组成的集合,将缓存的数据分散到多个redis节点上存储,减轻单个缓存节点的访问压力,达到分流效果,提高了存储容量和吞吐量,提供高可用性和容错恢复能力,实现了水平扩容。

Redis集群的作用和优势

1. 处理大规模数据将数据分散在多个节点上,从而突破单节点内存限制,有效应对数据量的增长和高并发的访问请求。

2. 高可用性当主节点发生故障时,集群会自动选举新的主节点,从而实现故障转移,保证高可用性。

3. 可扩展性:Redis集群可以根据业务需求和系统负载,动态添加或删除节点,实现水平扩展,以适应数据规模的变化。

4. 高性能:Redis集群中的各个节点可以并行处理不同的请求,从而提高系统整体吞吐量和响应速度,适合于高并发访问的场景。

5. 自动故障转移:Redis集群通过哨兵节点监控主节点的健康状态,在主节点故障时,自动选举新的主节点,减少服务中断和数据丢失的风险。


从(Master - Slave)模式

「主从模式的原理」

主从模式是指在Redis集群中有一个主节点(Master)和多个从节点(Slave)。

Master节点负责数据的写操作,Slave节点负责数据的读操作。

通过主从复制,将Master节点的数据变更同步到Slave节点。

「主从模式的优点」

1. 数据备份:通过主从复制,从节点备份主节点的数据,提高数据可靠性。

2. 读写分离:将读操作和写操作分配给不同的节点处理,提高系统稳定性。

3. 提升读取性能:通过多个从节点来分担读操作的压力,提高数据的查询效率。

「主从模式的缺点」

1. 没有容错和恢复的能力存在单点故障:一旦Master节点故障,不会自动选出新的主节点,导致后续所有的写操作直接失败。

2. 可用性低:主节点故障时不能自动实现故障转移,需要人工干预手动切换,故障恢复时间长。

3. 没有实现数据分片无法在线扩容,并发压力受限于单节点服务器的资源配置。

4. 集群中所有节点保存的都是全量数据,浪费内存空间,且数据量过大时严重影响主从同步的速度。

5. 单个主节点承担所有写操作,写操作受单节点性能瓶颈影响。

「主从模式的应用场景」

适用于数据备份、读写分离、对可用性要求不高,小规模数据处理的场景。


兵(Sentinel)模式

「哨兵模式的原理」
哨兵模式是在Redis主从集群的基础上加入了哨兵节点,监控主节点和从节点的状态。当Master节点出现故障时,哨兵节点会自动从剩余的Slave节点中选举出一个新的Master节点,并通知其他Slave节点和客户端。

「哨兵模式的优点」

1. 高可用性:提供故障的自动处理能力。

2. 容灾恢复:在主从模式数据备份的基础上,提供容错和自动恢复机制。

3. 读写分离:通过多个从节点来分担读操作的压力,提升读取性能。

4. 解决了单点故障:监测到master节点故障,会自动从slave节点中选出一个节点将其切换成master节点,在选举结束之前,redis会开启保护机制,禁止写操作,直到新的master节点产生。每个哨兵节点都是一个独立的进程,哨兵节点之间也会互相监控

「哨兵模式的缺点」

1. 依然没有实现数据分片,无法在线扩容,并发压力受限于单节点服务器的资源配置。

2. 每个从节点和主节点的耦合度高,在主节点宕机到重新选举Master的期间,服务不可用。

3. 集群中所有节点保存的都是全量数据,浪费内存空间,且数据量过大时严重影响主从同步的速度。

4. 单个主节点承担所有写操作,写操作受单节点性能瓶颈影响。

「哨兵模式的应用场景」

适用于数据备份、容灾恢复,高可用性、小规模数据处理的场景。



群(Cluster)模式

「Cluster的原理」
在Redis Cluster中,引入slot槽来实现数据分片,slot的整体取值范围是0~16383,每个节点会分配一个slot区间,数据分散在多个节点上。每个分片都是由一个Redis主机和多个从机组成分片和分片之间是相互平行的每个master节点负责维护一部分槽以及槽所映射的键值数据

在Redis Cluster中,数据被分为16384个槽,每个槽存储一部分数据。

数据分片是用CRC16算法对key进行hash操作,哈希计算的结果是16位的哈希值,将哈希值对16384取模,得到槽位编号。当存取Key的时候,根据槽位编号,找到对应的节点进行数据的读写。


「Cluster的优点」

1. 数据分片基于slot槽的数据分片,突破单节点的内存限制,实现更大规模的数据分布式存储。

2. 横向扩展:实现在线动态横向扩缩容。

3. 高可用性:每个分片都是一个主节点对应多个从节点,主从复制,当Master出现故障,会从Slave节点中选举一个新的Master继续提供服务,实现自动故障转移。


「Cluster的缺点」

1. slave节点只是一个冷备节点,用于在主节点故障时接替其角色,不提供分担读操作的压力。

2. 对Redis里面的批量操作指令会有限制。

3. 客户端的实现会更加复杂。


「Cluster的应用场景」

适用于海量数据+高并发+高可用的场景。



 总结

1.主从(Master-Slave)模式适用于数据备份、读写分离、对可用性要求不高,小规模数据处理的场景。不提供容错和恢复功能,主节点故障时需要手动切换。
2.哨兵(Sentinel)模式在主从复制的基础上,提供了故障自动处理的能力,适用于数据备份、容灾恢复、高可用性的场景。没有实现数据分片,无法在线扩容,并发压力受限于单节点服务器的资源配置。
3.集群(Cluster)模式基于slot槽的数据分片,突破单节点的内存限制,实现更大规模的数据分布式存储,提供了高可用性和在线动态横向扩容的能力,提升数据的读写性能,主要针对于海量数据+高并发+高可用的场景。

从集群架构上来说:
哨兵(Sentinel)模式中心化的集群实现方案,一主多从
集群(Cluster)模式去中心化的集群实现方案,多主多从

主从模式和哨兵模式每个节点存储的都是全量的数据,当存储的数据量过大时,就需要对数据进行分片后存储到多个redis实例上。此时就要用到Redis Sharding技术。
如果数据量很大,那么建议就用cluster。数据量不是很大时,使用sentinel就够了。


 Redis集群分片的方式

1.「客户端分片分片逻辑在Redis客户端实现,采用一致性哈希来决定Redis节点。

优点:不依赖于第三方中间件,服务端的Redis实例彼此独立,相互无关联,分片逻辑和路由规则可控。

缺点:这是一种静态的分片方案,增删Redis节点时需要手工调整分片程序,服务端Redis集群拓扑结构有变化时,每个客户端都需要更新调整,运维成本较高。

2.「中间件分片Redis客户端把请求发送到中间件(例如Twemproxy、Codis),借助中间件实现Redis节点的路由分派,根据路由规则将请求发送到正确的Redis节点上。

优点:支持平滑增减Redis实例而无需修改任何的代码。

缺点:每个请求都经过代理才能到达Redis服务器,过程中产生性能损失。

3. 「客户端服务端分片Redis Cluster模式,客户端采用一致性哈希,服务端提供错误节点的重定向服务。

喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 699人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表