<返回更多

Redis集群架构模式概述,引领我们穿越在数据存储的未知之旅

2023-12-08  微信公众号  数据库干货铺
加入收藏

redis,不仅是数据存储,更是架构的艺术。从主从到哨兵、再到Cluster,每个模式都有着独特的优势。而代理模式,则是应对大规模场景的得力助手。这是一场探险,Redis引领我们穿越在数据存储的未知之旅。本文先简略介绍Redis的几种架构模式,后续合集再逐一进行详细介绍部署、使用及原理。

一、主从模式

1、简介

主从模式是Redis架构中最简单的模式之一,分为主数据库master和从数据库slave两类,主要特点如下:

2、工作机制

当从数据库启动时,主动向主数据库发送SYNC命令。主数据库接收SYNC命令后,在后台保存快照(RDB持久化)和缓存保存快照期间的命令,然后将保存的快照文件和缓存的命令发送给从数据库。从数据库收到后加载快照文件和执行缓存的命令。复制初始化后,主数据库每次收到写命令都会同步发送给从数据库,确保主从数据一致性。

缺点: 主节点唯一,主节点宕机导致Redis无法提供写服务。

二、哨兵模式

1、简介

哨兵模式解决主从模式的单点故障问题,通过监控Redis集群状态实现高可用性:

2、工作机制

3、注意

客户端不直接连接Redis,连接Sentinel的IP和端口,由Sentinel提供可用Redis实例。避免主节点宕机时Sentinel感知并提供新主节点。

三、Cluster模式

1、简介

哨兵模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实力中,cluster模式的出现就是为了解决单机Redis容量有限的问题,将Redis的数据根据一定的规则分配到多台机器。

2、工作机制

cluster可以说是sentinal和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容。
使用集群,只要将redis配置文件中的cluster-enable配置打开即可。每个集群中至少需要3个主数据库才能正常运行,新增节点非常方便。

3、cluster集群优点

4、cluster集群缺点

四、代理模式

目前比较流行的代理框架如下 :

对比:

Redis集群架构模式概述,引领我们穿越在数据存储的未知之旅

1、Twemproxy

(1)工作机制

Twemproxy是一种代理分片机制,由Twitter开源。Twemproxy作为代理,可接受来自多个程序的访问,按照路由规则,转发给后台的各个Redis服务器,再原路返回。该方案很好的解决了单个Redis实例承载能力的问题。通过Twemproxy可以使用多台服务器来水平扩张redis服务,可以有效的避免单点故障问题。

Redis集群架构模式概述,引领我们穿越在数据存储的未知之旅

(2)缺点

(3)不支持的命令

见https://Github.com/twitter/twemproxy/blob/master/notes/redis.md。

2、Codis

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说,连接到 Codis Proxy 和连接原生的 RedisServer 没有明显的区别 (部分命令不支持),上层应用可以像使用单机的 Redis 一样使用,Codis 底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的 Redis 服务。

(1)工作机制

Codis包含如下组件

Redis集群架构模式概述,引领我们穿越在数据存储的未知之旅

(2)优点

Codis项目为Redis提供了智能而强大的扩展功能,其显著特点如下:

(3)不支持的命令

KEYS, MOVE, OBJECT, RENAME, RENAMENX, SORT, SCAN, BITOP,MSETNX, BLPOP, BRPOP,
 BRPOPLPUSH, PSUBSCRIBE,PUBLISH, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE, 
DISCARD, EXEC, MULTI, UNWATCH, WATCH, SCRIPT EXISTS, SCRIPT FLUSH, 
SCRIPT KILL, SCRIPT LOAD, AUTH, ECHO, SELECT, BGREWRITEAOF, BGSAVE, 
CLIENT KILL, CLIENT LIST, CONFIG GET, CONFIG SET, CONFIG RESETSTAT, 
DBSIZE, DEBUG OBJECT, DEBUG SEGFAULT, FLUSHALL, FLUSHDB, INFO, LASTSAVE,
 MONITOR, SAVE, SHUTDOWN, SLAVEOF, SLOWLOG, SYNC, TIME

详情请参考:https://github.com/CodisLabs/codis
https://github.com/CodisLabs/codis/blob/master/doc/tutorial_zh.md。

3、predixy

在Redis3.0版本引入RedisCluster之前,代理层是实现Redis集群的首选方案。其中,Twemproxy和Codis是两个常见的代理工具。然而,Twemproxy存在一些限制,如不支持阻塞命令、事务、发布订阅等,且没有直接支持Redis高可用。之后有了 redis cluster后,Predixy是比较靠谱的代理方案。

(1)Predixy工作机制

Predixy是一个强大的代理工具,同时支持Redis Sentinel和Redis Cluster:

(2)Predixy特点

Predixy拥有多项特点,使其成为强大而灵活的代理工具,主要特点如下:

五、小结

本期为概述内容,参考多个文档并修改其中错误内容,后续具体各架构详情将在合集中详细演示。

关键词:Redis      点击(12)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多Redis相关>>>