掌桥专利:专业的专利平台
掌桥专利
首页

Redis集群架构系统和数据处理方法

文献发布时间:2024-04-18 19:58:21


Redis集群架构系统和数据处理方法

技术领域

本发明涉及缓存架构技术领域,尤其是涉及一种Redis集群架构系统和数据处理方法。

背景技术

随着网络技术的发展和创新,应用软件的高并发读写请求和数据存储量的增长已成为大多数企业面临的共同挑战。作为一种高性能的NoSQL数据库,Redis因为能够快速存取数据并支持复杂的命令操作,受到越来越多企业的青睐。

然而,当数据存储量达到一定的规模,单机Redis已不能满足性能要求,同时单机Redis也存在单点故障问题。参见图1,多个应用系统访问Redis缓存服务,Redis缓存服务部署在一台机器上。当用户数量达到一定规模,越来越多的用户会频繁访问应用系统,应用系统不断请求Redis服务读取和存储数据。当并发请求太多,超过Redis服务处理能力时,会造成Redis服务响应延迟甚至超时,降低应用系统性能。同时在现有方案中,当存储的数据超过Redis存储容量上限后,Redis服务不能再继续写入数据,造成系统异常。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供了一种Redis集群架构系统和数据处理方法。

根据第一方面,本发明实施例提供的Redis集群架构系统包括多个Redis缓存节点组;不同Redis缓存节点组对应不同的哈希槽,同一个Redis缓存节点组内的各个节点对应相同的哈希槽,以使不同的数据根据各自对应的哈希槽被映射到对应的Redis缓存节点组中。

根据第二方面,本发明实施例提供的数据处理方法,该方法基于第一方面的系统实现,所述方法包括:

在接收到应用系统发送来的数据处理请求时,确定数据对应的哈希槽;

根据所述哈希槽确定对应的Redis缓存节点组;

基于确定的Redis缓存节点组中的主节点,进行数据处理操作。

本发明实施例提供的Redis集群架构系统和数据处理方法,多个Redis缓存节点组形成了一个集群,这个集群中不同Redis缓存节点组对应不同的哈希槽,针对一个待处理数据,计算对应的哈希槽,进而根据计算得到的哈希槽,得知该待处理数据对应的Redis缓存节点组是哪个,进而通过该Redis缓存节点组进行相应的处理,即不同的数据根据各自对应的哈希槽被映射到对应的Redis缓存节点组中。可见本发明实施例创建Redis集群,实现由单机Redis服务转为集群主从多个Redis服务,使用集群主从架构可以提高Redis读写性能、存储容量和故障容错,从而提升系统的性能和可用性。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中的单机Redis的架构示意图;

图2为本发明一个实施例中Redis集群架构系统的架构示意图;

图3为本发明一个实施例中一个Redis缓存节点组中角色转换的示意图;

图4为本发明一个实施例中每一个节点上Redis服务的部署示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一方面,本发明实施例提供一种Redis集群架构系统,该系统包括多个Redis缓存节点组;不同Redis缓存节点组对应不同的哈希槽,同一个Redis缓存节点组内的各个节点对应相同的哈希槽,以使不同的数据根据各自对应的哈希槽被映射到对应的Redis缓存节点组中。

其中,Redis作为一种高性能的NoSQL数据库,因为能够快速存取数据并支持复杂的命令操作,受到越来越多企业的青睐。

其中,哈希槽是一个数组空间。为了解决数据分配问题,在数据和节点之间加入了一层,把这层称为哈希槽,用于管理数据和节点之间的关系,现在就相当于节点上放的是槽,槽里放的是数据。一个集群只能有16384个槽,编号0-16383。这些槽会分配给集群中Redis缓存节点组,可以指定哪些编号的槽分配给哪个Redis缓存节点组,集群会记录节点和槽的对应关系。例如,针对某个数据,求其哈希值,然后对16384取余,余数是这个数据对应的哈希槽,进而将该数据分配给该哈希槽对应的Redis缓存节点组。

其中,不同的Redis缓存节点组对应不同的哈希槽,这样可以保证一个数据被分配到一个Redis缓存节点组中。同一个Redis缓存节点组内的各个节点对应相同的哈希槽,例如,某个Redis缓存节点组内都对应的哈希槽为0-163,由于主节点才与外界交互,因此可以认为主节点的哈希槽为0-163。

可见,多个Redis缓存节点组形成了一个集群,这个集群中不同Redis缓存节点组对应不同的哈希槽,针对一个待处理数据,计算对应的哈希槽,进而根据计算得到的哈希槽,得知该待处理数据对应的Redis缓存节点组是哪个,进而通过该Redis缓存节点组进行相应的处理,即不同的数据根据各自对应的哈希槽被映射到对应的Redis缓存节点组中。

在一个实施例中,每一个Redis缓存节点组中包括一个主节点和至少一个从节点,所述主节点用于与应用系统进行数据交互;所述至少一个从节点均与所述主节点通信连接,每一个从节点能够自动同步所述主节点中的数据,以使该从节点和所述主节点保持数据同步。

例如,一个Redis缓存节点组中包括一个主节点和一个从节点,主节点和应用系统进行交互,而从节点和该主节点连接,从节点会自动同步主节点上的数据,从而使得从节点和主节点保持数据同步的状态。

在一个实施例中,一个Redis缓存节点组中的主节点出现故障时,该Redis缓存节点组中的一个从节点担任主节点的角色,且出现故障的原主节点的角色切换成为一个需要修复的从节点。

也就是说,如果一个Redis缓存节点组中的主节点出现了故障,无法进行正常的工作,则从该Redis缓存节点组中的各个从节点中选择一个从节点来担任主节点的角色,而原来的主节点的角色变为了从节点,也就是说,此时进行角色转换,使可以正常工作的一个从节点成为了主节点。

进一步的,所述Redis缓存节点组中的各个从节点通过选举算法选举出一个从节点来担任主节点。

即,通过选举算法从各个从节点中选择出一个从节点作为主节点。当然,如果从节点只有一个,则不需要采用选举算法了。

在一个实施例中,所述Redis缓存节点组中需要修复的从节点被修复后同步当前的主节点中的数据。

即,原主节点变为从节点之后,需要对该从节点进行修复,从而使其能够正常工作,被修复好之后,仍然作为从节点,同步当前的主节点中的数据,保持主从同步。

在一个实施例中,各个Redis缓存节点组中的主节点之间通信连接。

其中,各个Redis缓存节点组中的主节点之间为通信连接的关系,这样各个主节点之间可以进行信息的交互,例如,交互各自的哈希槽。当某个数据被分配到一个错误的Redis缓存节点组之后,可以通过各主节点之间的交互,得知真正应该被分配到的Redis缓存节点组是哪个,进而将该数据传送到正确的Redis缓存节点组中。

在一个实施例中,所述Redis集群架构系统通过gossip协议维护元数据,所述元数据包括节点基本信息、主从节点的角色变换信息、节点增减信息和节点数据变化信息中的至少一项。

其中,节点的基本信息,例如,节点的标识、名称、角色等。

其中,主从节点的角色变换信息,例如,节点是否发生过角色变换。

其中,节点增减信息,例如,每一个Redis缓存节点组中新增加或者删除的节点是哪个,数量有多少等。

其中,节点数据变化信息,例如,节点中的数据是否发生变化,数据量是否发生变化等。

可理解的是,现有技术中,当数据存储量达到一定的规模时,单机Redis会出现性能瓶颈以及单点故障问题。本发明实施例针对这两个问题,设计了一种高性能、高可靠性的Redis集群架构系统,提高了Redis的读写能力和处理效率,提升服务性能,同时当一个主节点宕机时,可以实现故障转移,保障Redis服务能够继续运行,提高系统可用性。

参见图2,在系统中设置了Redis缓存节点组A、B、C,每一个Redis缓存节点组中包括一个主节点和一个从节点,数据key1对应的是Redis缓存节点组A,数据key2对应的是Redis缓存节点组B,数据key3对应的是Redis缓存节点组C。master为主节点,slave为从节点。

由于Redis集群架构系统是多个主节点同时向应用系统提供数据的查询和读写,以横向扩展的方式提高了Redis服务性能,在图2中从单台机器变为三台机器,性能提高三倍。同时数据存储容量也提高3倍,从而支撑上层应用系统的海量数据存储与高并发读写。

参见图3,如果Redis缓存节点组A中的主节点出现故障或者机器宕机、网络中断,Redis缓存节点组A中从节点切换为主节点继续向应用系统提供服务。当原来的主节点恢复后,作为从节点同步新的主节点的数据,保持主从数据一致。当从节点出现故障或者机器宕机、网络中断,此时不影响应用系统读写主节点的数据,当从节点恢复后,继续同步主节点的数据,保持主从数据一致。

参见图4,针对每一个节点上的Redis服务,其部署过程大概包括:

1、在Redis官网下载Redis安装包;

2、在每台机器上,解压安装包后进入redis目录,编译并安装Redis。

3、修改每台机器的配置文件,比如端口号,然后启动redis服务。

4、创建集群,使用命令./redis-trib.rb create--replicas 1ip:port。

5、集群创建完成后,连接redis任意一台服务,读写数据,进行测试。

可理解的是,本发明实施例创建Redis集群,实现由单机Redis服务转为集群主从多个Redis服务,使用集群主从架构可以提高Redis读写性能、存储容量和故障容错,从而提升系统的性能和可用性。

第二方面,本发明实施例提供一种数据处理方法,所述方法基于第一方面提供的系统实现,所述方法包括:

在接收到应用系统发送来的数据处理请求时,确定数据对应的哈希槽;

根据所述哈希槽确定对应的Redis缓存节点组;

基于确定的Redis缓存节点组中的主节点,进行数据处理操作。

其中,数据处理请求,例如,读请求、写请求等。

例如,需要写入一个数据,计算该数据的哈希槽,经过计算哈希槽与第一个Redis缓存节点组相对应,因此将该数据写入到第一个Redis缓存节点组中的主节点中,完成写操作。当然,第一个Redis缓存节点组中的各个从节点也会进行该数据的写入,保持数据同步。

可理解的是,本发明实施例提供的方法可以由集群中的管理服务器执行。

在一个实施例中,还包括:

接收任意一个Redis缓存节点组中的主节点故障上报信息;

通过选举算法,从该Redis缓存节点组中的各个从节点中选举出一个从节点来担任主节点的角色;

将出现故障的原主节点的角色切换成为一个需要修复的从节点。

可理解的是,当一个Redis缓存节点组中的主节点出现故障时,会进行上报,在得知某个Redis缓存节点组中的主节点出现故障而无法正常工作时,会通过选举算法选择出一个从节点来担任主节点的角色,而且原主节点变为了一个从节点,实现了角色的转换,以保证正常的工作。

在一个实施例中,本发明实施例提供的方法还可以包括:

通过gossip协议维护元数据,所述元数据包括节点基本信息、主从节点的角色变换信息、节点增减信息和节点数据变化信息中的至少一项。

其中,Gossip协议也叫Epidemic Protocol即流行病协议,主要用于消息传播,是一种一致性算法。协议也非常好理解,正如协议的名称,如流行病一样靠“感染”节点进行持续传播。使用Gossip协议的有:Redis Cluster、Consul、Apache Cassandra等。

可理解的是,本发明实施例提供的方法中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第一方面提供的系统中的相应部分,此处不再赘述。

第三方面,本发明实施例提供一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行第二方面提供的方法。

具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。

在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。

用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。

此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。

此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。

可理解的是,本发明实施例提供的计算机可读介质中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第二方面提供的方法中的相应部分,此处不再赘述。

第四方面,本说明书一个实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现执行说明书中任一个实施例中的方法。

可理解的是,本发明实施例提供的计算设备中有关内容的解释、具体实施方式、有益效果、举例等内容可以参见第二方面提供的方法中的相应部分,此处不再赘述。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

相关技术
  • 一种基于数据流架构的人工智能芯片和数据处理方法
  • RapidIO接口架构和数据处理方法
技术分类

06120116481704