CN109769028A - Redis集群管理方法、装置、设备及可读存储介质 - Google Patents

Redis集群管理方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN109769028A
CN109769028A CN201910082861.1A CN201910082861A CN109769028A CN 109769028 A CN109769028 A CN 109769028A CN 201910082861 A CN201910082861 A CN 201910082861A CN 109769028 A CN109769028 A CN 109769028A
Authority
CN
China
Prior art keywords
redis cluster
data
redis
agent components
subregion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910082861.1A
Other languages
English (en)
Inventor
卢道和
杨军
黎君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910082861.1A priority Critical patent/CN109769028A/zh
Publication of CN109769028A publication Critical patent/CN109769028A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种Redis集群管理方法,包括:当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区;将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的Redis节点。本发明还公开了一种Redis集群管理装置、设备及可读存储介质。本发明能够有效的保证Redis集群的数据完整性和高可用。

Description

Redis集群管理方法、装置、设备及可读存储介质
技术领域
本发明涉及Redis集群的技术领域,尤其涉及一种Redis集群管理方法、装置、设备及可读存储介质。
背景技术
由于单台Redis服务器的内存管理能力有限,Redis服务器发生故障将直接影响大面积业务。为了获取更好的缓存性能及扩展型,通过搭建Redis集群来满足需求。目前,主要通过Twemproxy和Redis Sentinel搭建Redis集群,即Twemproxy是一个支持Redis协议的单线程的代理程序,通过引入代理层,封装后端真实的Redis存储分片,并通过RedisSentinel实现Failover保证Redis存储分片的高可用。
然而,通过Twemproxy和Redis Sentinel搭建的Redis集群属于中心化管理架构,Redis Sentinel容易出现异常,而Redis Sentinel作为保证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集群代理组件中的一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集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区。
可选地,所述确定模块还用于:
获取至少两个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集群代理组件可以将数据访问请求路由到未宕机的目标数据分区中的对应Redis节点,规避了中心化管理架构下对核心管理组件强依赖下可能引发的单点问题,也可以避免将数据访问请求路由到宕机的目标数据分区中,不需要人工运维介入,有效的保证Redis集群的数据完整性和高可用,也可以减少运维。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明Redis集群管理方法一实施例的流程示意图;
图3为本发明Redis集群管理装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例Redis集群管理设备可以是PC,也可以是智能手机、平板电脑、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该Redis集群管理设备可以包括:处理器1001,例如CPU,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选的用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的Redis集群管理设备结构并不构成对Redis集群管理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。该Redis集群管理设备还包括预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及Redis集群管理程序。
在图1所示的Redis集群管理设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的Redis集群管理程序,并执行以下步骤:
当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区;
将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;
将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的Redis节点。
进一步地,处理器1001可以用于调用存储器1005中存储的Redis集群管理程序,还执行以下步骤:
当监测到数据访问请求时,确定所述数据访问请求中的数据键值;
通过所述Redis集群代理组件对所述数据键值进行哈希计算,得到目标哈希值;
确定所述目标哈希值在预设的哈希圆环上的位置,并从所述位置开始沿着所述哈希圆环顺时针方向移动,获取首次在所述哈希圆环上遇到的数据分区;
判断所述数据分区是否宕机;
若所述数据分区宕机,则继续沿着所述哈希圆环顺时针方向移动,将在所述哈希圆环上遇到的未宕机的数据分区确定为目标数据分区;
若所述数据分区未宕机,则将所述数据分区确定为目标数据分区。
进一步地,处理器1001可以用于调用存储器1005中存储的Redis集群管理程序,还执行以下步骤:
通过所述Redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;
依据所述取模结果确定未宕机的目标数据分区。
进一步地,处理器1001可以用于调用存储器1005中存储的Redis集群管理程序,还执行以下步骤:
当监测到数据访问请求时,将至少两个Redis集群代理组件中的一Redis集群代理组件确定为目标Redis集群代理组件;
通过所述目标Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区。
进一步地,处理器1001可以用于调用存储器1005中存储的Redis集群管理程序,还执行以下步骤:
获取至少两个Redis集群代理组件中各Redis集群代理组件的负载信息;
依据所述负载信息,确定至少两个Redis集群代理组件中各Redis集群代理组件的负载指数;
将至少两个Redis集群代理组件中所述负载指数最小的Redis集群代理组件,确定为目标Redis集群代理组件。
其中,本发明Redis集群管理设备的具体实施例与下述Redis集群管理方法的各具体实施例基本相同,在此不作赘述。
本发明提供一种Redis集群管理方法。
参照图2,图2为本发明Redis集群管理方法第一实施例的流程示意图。
本实施例中,该Redis集群管理方法包括:
步骤S101,当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区;
本实施例中,该缓存服务器Redis集群管理方法应用于Redis集群管理设备,该Redis集群管理设备包括预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成,数据分区为Redis原生的Redis Cluster,Redis Cluster是Redis官方提供的去中心化管理架构的集群解决方案,每个数据分区负责整体数据的一部分,部署结构和容量均固定,可选地,数据分区由9个Redis节点组成。在本实施例中,该Redis集群代理组件是在Netty的通信框架基础上,由面向客户端和Redis服务节点的编码器通过实现Redis通信协议,以及封装底层去中心化Redis Cluster请求转移的交互协议,达到屏蔽数据存储细节得到的高性能代理组件,其中,该Netty是由JBOSS(基于J2EE的开放源代码的应用服务器)提供的一个java开源框架,该Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。通过面向客户端和Redis服务节点的编码器兼容Redis通信协议得到Redis集群代理组件,在容量伸缩场景下实现安全、高效的数据迁移,提高运维效率、对业务透明。
当监测到数据访问请求时,该Redis集群管理设备通过该Redis集群代理组件和该数据访问请求中的数据键值,即key值,确定未宕机的目标数据分区。即,当监测到数据访问请求时,确定所述数据访问请求中的数据键值;通过所述Redis集群代理组件对所述数据键值进行算法处理,得到处理结果;依据所述处理结果确定未宕机的目标数据分区。作为一种实施方式,Redis集群管理设备中存储有哈希圆环,该哈希圆环由整个哈希值(2147483647个哈希值)空间组成,且各数据分区均作为节点分布在该哈希圆环上,则确定未宕机的目标数据分区的方式具体可以为:当监测到数据访问请求时,该Redis集群管理设备,确定该数据访问请求中的数据键值,并通过该Redis集群代理组件对该数据键值进行哈希计算,得到目标哈希值,然后确定该目标哈希值在预设的哈希圆环上的位置,并从该位置开始沿着该哈希圆环顺时针方向移动,获取首次在哈希圆环上遇到的数据分区,最后判断该数据分区是否宕机,如果该数据分区宕机,则继续沿着该哈希圆环顺时针方向移动,将在该哈希圆环上遇到的未宕机的数据分区确定为目标数据分区,如果该数据分区未宕机,则将该数据分区确定为目标数据分区,即将首次遇到的数据分区确定为目标数据分区。
此外,作为另一种实施方式,还可选为:
当监测到数据访问请求时,确定所述数据访问请求中的数据键值;
通过所述Redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;
依据所述取模结果确定未宕机的目标数据分区。
具体地,通过该Redis集群代理组件获取Redis集群管理设备中包含的数据分区的个数,即数据分区个数,并用该数据键值对该数据分区个数取模,得到取模结果(余数),然后获取预设的取模结果与数据分区的映射关系表,并查询该映射关系表,获取该取模结果对应的数据分区,且判断该取模结果对应的数据分区是否宕机,如果该取模结果对应的数据分区未宕机,则将该取模结果对应的数据分区确定为目标数据分区,如果该取模结果对应的数据分区宕机,则从未宕机的数据分区中选择一个数据分区作为目标数据分区。
需要说明的是,采用哈希算法的方式,一致性哈希是会动态路由到下一个可用数据分区,即使有数据分区出现宕机,也可以自动路由到下一数据分区,无需等待宕机的数据分区恢复,效率和智能性更高。
步骤S102,将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;
步骤S103,将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的Redis节点。
本实施例中,在确定目标数据分区之后,该Redis集群管理设备将该数据访问请求路由到该目标数据分区,并对该数据键值进行处理,得到哈希槽编号(即采用CRC(CyclicRedundancy Check,循环冗余校验)算法对该数据键值进行计算,并用计算得到的结果对哈希槽总数(16384)取余,从而得到哈希槽编号),然后将该数据访问请求路由到该目标数据分区中与该哈希槽编号对应的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集群代理组件中各Redis集群代理组件的负载指数,然后将至少两个Redis集群代理组件中该负载指数最小的Redis集群代理组件,确定为目标Redis集群代理组件。其中,该负载信息包括但不限于内存和CPU的使用情况、连接数和吞吐量,需要说明的是,负载指数越小,则负载越低,而负载指数越高,则负载越高。可选地,该负载指数为单位时间内单位连接的吞吐量。
本实施例中,本发明当监测到数据访问请求时,将至少两个Redis集群代理组件中的一Redis集群代理组件确定为目标Redis集群代理组件,通过目标Redis集群代理组件和数据访问请求中的数据键值,确定未宕机的目标数据分区,可以实现Redis集群代理组件的负载均衡。
本发明还提供一种Redis集群管理装置。
参照图3,图3为本发明Redis集群管理装置一实施例的功能模块示意图。
本实施例中,该Redis集群管理装置包括:
确定模块101,用于当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区;
本实施例中,该缓存服务器Redis集群管理装置应用Redis集群管理设备,该Redis集群管理设备包括预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成,数据分区为Redis原生的Redis Cluster,Redis Cluster是Redis官方提供的去中心化管理架构的集群解决方案,每个数据分区负责整体数据的一部分,部署结构和容量均固定,可选地,数据分区由9个Redis节点组成。在本实施例中,该Redis集群代理组件是在Netty的通信框架基础上,由面向客户端和Redis服务节点的编码器通过实现Redis通信协议,以及封装底层去中心化Redis Cluster请求转移的交互协议,达到屏蔽数据存储细节得到的高性能代理组件,其中,该Netty是由JBOSS(基于J2EE的开放源代码的应用服务器)提供的一个java开源框架,该Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。通过面向客户端和Redis服务节点的编码器兼容Redis通信协议得到Redis集群代理组件,在容量伸缩场景下实现安全、高效的数据迁移,提高运维效率、对业务透明。
当监测到数据访问请求时,该确定模块101通过该Redis集群代理组件和该数据访问请求中的数据键值,即key值,确定未宕机的目标数据分区。即当监测到数据访问请求时,确定所述数据访问请求中的数据键值;通过所述Redis集群代理组件对所述数据键值进行算法处理,得到处理结果;依据所述处理结果确定未宕机的目标数据分区。作为一种实施方式,Redis集群管理设备中存储有哈希圆环,该哈希圆环由整个哈希值(2147483647个哈希值)空间组成,且各数据分区均作为节点分布在该哈希圆环上,则确定未宕机的目标数据分区的方式具体可以为:当监测到数据访问请求时,通过该Redis集群代理组件,确定该数据访问请求中的数据键值,并对该数据键值进行哈希计算,得到目标哈希值,然后确定该目标哈希值在预设的哈希圆环上的位置,并从该位置开始沿着该哈希圆环顺时针方向移动,获取首次在哈希圆环上遇到的数据分区,最后判断该数据分区是否宕机,如果该数据分区宕机,则继续沿着该哈希圆环顺时针方向移动,将在该哈希圆环上遇到的未宕机的数据分区确定为目标数据分区,如果该数据分区未宕机,则将该数据分区确定为目标数据分区,即将首次遇到的数据分区确定为目标数据分区。
此外,作为另一种实施方式,还可选为:
当监测到数据访问请求时,确定所述数据访问请求中的数据键值;
通过所述Redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;
依据所述取模结果确定未宕机的目标数据分区。
具体地,通过该Redis集群代理组件获取Redis集群管理设备中包含的数据分区的个数,即数据分区个数,并用该数据键值对该数据分区个数取模,得到取模结果(余数),然后获取预设的取模结果与数据分区的映射关系表,并查询该映射关系表,获取该取模结果对应的数据分区,且判断该取模结果对应的数据分区是否宕机,如果该取模结果对应的数据分区未宕机,则将该取模结果对应的数据分区确定为目标数据分区,如果该取模结果对应的数据分区宕机,则从未宕机的数据分区中选择一个数据分区作为目标数据分区。
需要说明的是,采用哈希算法的方式,一致性哈希是会动态路由到下一个可用数据分区,即使有数据分区出现宕机,也可以自动路由到下一数据分区,无需等待宕机的数据分区恢复,效率和智能性更高。
路由模块102,用于将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;
所述路由模块102,还用于将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的Redis节点。
本实施例中,在确定目标数据分区之后,该Redis集群管理设备将该数据访问请求路由到该目标数据分区,并对该数据键值进行处理,得到哈希槽编号(即采用CRC(CyclicRedundancy Check,循环冗余校验)算法对该数据键值进行计算,并用计算得到的结果对哈希槽总数(16384)取余,从而得到哈希槽编号),然后将该数据访问请求路由到该目标数据分区中与该哈希槽编号对应的Redis节点。
进一步地,为保证数据的安全,当监测到数据访问请求时,该Redis集群管理设备对该数据访问请求进行鉴权,当该数据访问请求通过鉴权时,通过Redis集群代理组件和数据访问请求中的数据键值,将该数据访问请求路由到未宕机的数据分区中的对应Redis节点,而当该数据访问请求未通过鉴权,则不作处理。其中,鉴权方式具体为从该数据访问请求中获取鉴权密码和登录名,并获取与该登录名对应的预置密码,然后判断该鉴权密码与该预置密码是否相同,如果该鉴权密码与该预置密码相同,则确定该数据访问请求通过鉴权,如果该鉴权密码与预置密码不相同,则确定该数据访问请求未通过鉴权。
本实施例中,本发明当监测到数据访问请求时,通过Redis集群代理组件和数据访问请求中的数据键值,确定未宕机的目标数据分区,并将该数据访问请求路由到该目标数据分区,且对该数据键值进行处理,得到哈希槽编号,最后将该数据访问请求路由到该目标数据分区中与该哈希槽编号对应的Redis节点,由于通过Redis集群代理组件可以将数据访问请求路由到未宕机的目标数据分区中的对应Redis节点,规避了中心化管理架构下对核心管理组件强依赖下可能引发的单点问题,也可以避免将数据访问请求路由到宕机的目标数据分区中,不需要人工运维介入,有效的保证Redis集群的数据完整性和高可用,也可以减少运维。
进一步地,基于上述一实施例,提出了本发明Redis集群管理装置的另一实施例,与前述实施例的区别在于,由于Redis集群代理组件处理能力有限,在数据访问请求较多时,Redis集群代理组件的负载较高,无法有效的处理数据访问请求,为此,需要扩容多个Redis集群代理组件,即Redis集群管理设备中的Redis集群代理组件至少为两个,当监测到数据访问请求时,确定模块101将至少两个Redis集群代理组件中的一Redis集群代理组件确定为目标Redis集群代理组件,并通过该目标Redis集群代理组件和该数据访问请求中的数据键值,确定未宕机的目标数据分区,然后路由模块102将数据访问请求路由到目标数据分区,并将数据访问请求路由到目标数据分区中的对应Redis节点。
其中,该目标Redis集群代理组件的确定方式具体为:该Redis集群管理设备获取至少两个Redis集群代理组件中各Redis集群代理组件的负载信息,并依据该负载信息,确定至少两个Redis集群代理组件中各Redis集群代理组件的负载指数,然后将至少两个Redis集群代理组件中该负载指数最小的Redis集群代理组件,确定为目标Redis集群代理组件。其中,该负载信息包括但不限于内存和CPU的使用情况、连接数和吞吐量,需要说明的是,负载指数越小,则负载越低,而负载指数越高,则负载越高。可选地,该负载指数为单位时间内单位连接的吞吐量。
本实施例中,本发明当监测到数据访问请求时,将至少两个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集群代理组件的负载信息;
依据所述负载信息,确定至少两个Redis集群代理组件中各Redis集群代理组件的负载指数;
将至少两个Redis集群代理组件中所述负载指数最小的Redis集群代理组件,确定为目标Redis集群代理组件。
其中,本发明可读存储介质的具体实施例与上述Redis集群管理方法各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (11)

1.一种缓存数据库Redis集群管理方法,其特征在于,所述Redis集群管理方法应用于Redis集群管理设备,所述Redis集群管理设备包括预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成,所述Redis集群管理方法包括以下步骤:
当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区;
将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;
将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的Redis节点。
2.如权利要求1所述的Redis集群管理方法,其特征在于,所述当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区的步骤包括:
当监测到数据访问请求时,确定所述数据访问请求中的数据键值;
通过所述Redis集群代理组件对所述数据键值进行哈希计算,得到目标哈希值;
确定所述目标哈希值在预设的哈希圆环上的位置,并从所述位置开始沿着所述哈希圆环顺时针方向移动,获取首次在所述哈希圆环上遇到的数据分区;
判断所述数据分区是否宕机;
若所述数据分区宕机,则继续沿着所述哈希圆环顺时针方向移动,将在所述哈希圆环上遇到的未宕机的数据分区确定为目标数据分区;
若所述数据分区未宕机,则将所述数据分区确定为目标数据分区。
3.如权利要求2所述的Redis集群管理方法,其特征在于,所述当监测到数据访问请求时,确定所述数据访问请求中的数据键值的步骤之后,还包括:
通过所述Redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;
依据所述取模结果确定未宕机的目标数据分区。
4.如权利要求1所述的Redis集群管理方法,其特征在于,所述Redis集群代理组件至少为两个,当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区的步骤包括:
当监测到数据访问请求时,将至少两个Redis集群代理组件中的一Redis集群代理组件确定为目标Redis集群代理组件;
通过所述目标Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区。
5.如权利要求4所述的Redis集群管理方法,其特征在于,所述将至少两个Redis集群代理组件中的一Redis集群代理组件确定为目标Redis集群代理组件的步骤包括:
获取至少两个Redis集群代理组件中各Redis集群代理组件的负载信息;
依据所述负载信息,确定至少两个Redis集群代理组件中各Redis集群代理组件的负载指数;
将至少两个Redis集群代理组件中所述负载指数最小的Redis集群代理组件,确定为目标Redis集群代理组件。
6.一种Redis集群管理装置,其特征在于,所述Redis集群管理装置应用于Redis集群管理设备,所述Redis集群管理设备包括预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成,所述Redis集群管理装置包括:
确定模块,用于当监测到数据访问请求时,通过所述Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区;
路由模块,用于将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;
所述路由模块,还用于将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的Redis节点。
7.如权利要求6所述的Redis集群管理装置,其特征在于,所述确定模块还用于:
当监测到数据访问请求时,确定所述数据访问请求中的数据键值;
通过所述Redis集群代理组件对所述数据键值进行哈希计算,得到目标哈希值;
确定所述目标哈希值在预设的哈希圆环上的位置,并从所述位置开始沿着所述哈希圆环顺时针方向移动,获取首次在所述哈希圆环上遇到的数据分区;
判断所述数据分区是否宕机;
若所述数据分区宕机,则继续沿着所述哈希圆环顺时针方向移动,将在所述哈希圆环上遇到的未宕机的数据分区确定为目标数据分区;
若所述数据分区未宕机,则将所述数据分区确定为目标数据分区。
8.如权利要求7所述的Redis集群管理装置,其特征在于,所述路由模块还用于:
通过所述Redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;
依据所述取模结果确定未宕机的目标数据分区。
9.如权利要求6所述的Redis集群管理装置,其特征在于,所述Redis集群代理组件至少为两个,所述确定模块还用于:
当监测到数据访问请求时,将至少两个Redis集群代理组件中的一Redis集群代理组件确定为目标Redis集群代理组件;
通过所述目标Redis集群代理组件和所述数据访问请求中的数据键值,确定未宕机的目标数据分区。
10.一种Redis集群管理设备,其特征在于,所述Redis集群管理设备包括:预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成,还包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的Redis集群管理程序,所述Redis集群管理程序被所述处理器执行时实现如权利要求1至5中任一项所述的Redis集群管理方法的步骤。
11.一种可读存储介质,其特征在于,所述可读存储介质应用于Redis集群管理设备,所述Redis集群管理设备包括预设的Redis集群代理组件和多个数据分区,每个数据分区由多个Redis节点组成,所述可读存储介质上存储有Redis集群管理程序,所述Redis集群管理程序被处理器执行时实现如权利要求1至5中任一项所述的Redis集群管理方法的步骤。
CN201910082861.1A 2019-01-25 2019-01-25 Redis集群管理方法、装置、设备及可读存储介质 Pending CN109769028A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910082861.1A CN109769028A (zh) 2019-01-25 2019-01-25 Redis集群管理方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910082861.1A CN109769028A (zh) 2019-01-25 2019-01-25 Redis集群管理方法、装置、设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN109769028A true CN109769028A (zh) 2019-05-17

Family

ID=66454491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910082861.1A Pending CN109769028A (zh) 2019-01-25 2019-01-25 Redis集群管理方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN109769028A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347718A (zh) * 2019-05-31 2019-10-18 平安科技(深圳)有限公司 一种redis分片方法、装置、计算机设备和存储介质
CN111078132A (zh) * 2019-10-15 2020-04-28 中国平安财产保险股份有限公司 基于Redis集群的数据均匀缓存方法、装置、终端及存储介质
CN111262781A (zh) * 2020-03-19 2020-06-09 黄诗嵘 一种智能加速路由选择方法
CN111475535A (zh) * 2020-03-09 2020-07-31 咪咕文化科技有限公司 数据存储、访问方法及装置
CN112286971A (zh) * 2020-11-04 2021-01-29 中国电力财务有限公司 缓存数据的管理方法、装置、服务器及计算机存储介质
CN112667682A (zh) * 2020-12-22 2021-04-16 杭州贝嘟科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN112698926A (zh) * 2021-03-25 2021-04-23 成都新希望金融信息有限公司 数据处理方法、装置、设备、存储介质及系统
CN113111123A (zh) * 2021-03-12 2021-07-13 北京达佳互联信息技术有限公司 集群业务的调用方法、装置、电子设备、存储介质及产品
CN114785713A (zh) * 2022-03-31 2022-07-22 度小满科技(北京)有限公司 一种用于实现Redis集群高可用的方法和代理中间件
CN115190005A (zh) * 2022-06-30 2022-10-14 南京信息工程大学 一种基于Redis的双宿主系统的高可用方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101969468A (zh) * 2010-10-14 2011-02-09 广州从兴电子开发有限公司 查询服务器集群系统及查询方法
CN102148850A (zh) * 2010-08-09 2011-08-10 华为软件技术有限公司 一种集群系统的业务处理方法及集群系统
CN105159985A (zh) * 2015-08-31 2015-12-16 努比亚技术有限公司 基于redis集群的数据查询装置及方法
CN106201338A (zh) * 2016-06-28 2016-12-07 华为技术有限公司 数据存储方法及装置
CN108011929A (zh) * 2017-11-14 2018-05-08 平安科技(深圳)有限公司 数据请求处理方法、装置、计算机设备和存储介质
CN108206779A (zh) * 2016-12-16 2018-06-26 北京金山云网络技术有限公司 一种集群访问系统、方法及装置
CN108416039A (zh) * 2018-03-14 2018-08-17 北京思特奇信息技术股份有限公司 一种数据查询方法和系统
CN109101195A (zh) * 2018-08-07 2018-12-28 郑州云海信息技术有限公司 一种memcached集群数据读写的方法、装置和可读存储介质
CN109246102A (zh) * 2018-09-07 2019-01-18 公安部第研究所 一种支撑大规模认证数据快速存储及检索的系统及方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102148850A (zh) * 2010-08-09 2011-08-10 华为软件技术有限公司 一种集群系统的业务处理方法及集群系统
CN101969468A (zh) * 2010-10-14 2011-02-09 广州从兴电子开发有限公司 查询服务器集群系统及查询方法
CN105159985A (zh) * 2015-08-31 2015-12-16 努比亚技术有限公司 基于redis集群的数据查询装置及方法
CN106201338A (zh) * 2016-06-28 2016-12-07 华为技术有限公司 数据存储方法及装置
CN108206779A (zh) * 2016-12-16 2018-06-26 北京金山云网络技术有限公司 一种集群访问系统、方法及装置
CN108011929A (zh) * 2017-11-14 2018-05-08 平安科技(深圳)有限公司 数据请求处理方法、装置、计算机设备和存储介质
CN108416039A (zh) * 2018-03-14 2018-08-17 北京思特奇信息技术股份有限公司 一种数据查询方法和系统
CN109101195A (zh) * 2018-08-07 2018-12-28 郑州云海信息技术有限公司 一种memcached集群数据读写的方法、装置和可读存储介质
CN109246102A (zh) * 2018-09-07 2019-01-18 公安部第研究所 一种支撑大规模认证数据快速存储及检索的系统及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JAVA后端技术: "面试必备:什么是一致性hash算法?", pages 2 - 10, Retrieved from the Internet <URL:http://t.csdnimg.cn/ZSaDB> *
XMAN-BLUE: "使用Codis搭建redis集群服务", pages 1 - 4, Retrieved from the Internet <URL:https://www.cnblogs.com/xmanblue/p/5924441.html> *
散尽浮华: "Redis+TwemProxy(nutcracker)集群方案部署记录", pages 1 - 3, Retrieved from the Internet <URL:https://www.cnblogs.com/kevingrace/p/5685401.html> *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347718B (zh) * 2019-05-31 2023-12-15 平安科技(深圳)有限公司 一种redis分片方法、装置、计算机设备和存储介质
CN110347718A (zh) * 2019-05-31 2019-10-18 平安科技(深圳)有限公司 一种redis分片方法、装置、计算机设备和存储介质
CN111078132A (zh) * 2019-10-15 2020-04-28 中国平安财产保险股份有限公司 基于Redis集群的数据均匀缓存方法、装置、终端及存储介质
CN111475535A (zh) * 2020-03-09 2020-07-31 咪咕文化科技有限公司 数据存储、访问方法及装置
CN111475535B (zh) * 2020-03-09 2024-02-06 咪咕文化科技有限公司 数据存储、访问方法及装置
CN111262781A (zh) * 2020-03-19 2020-06-09 黄诗嵘 一种智能加速路由选择方法
CN112286971A (zh) * 2020-11-04 2021-01-29 中国电力财务有限公司 缓存数据的管理方法、装置、服务器及计算机存储介质
CN112667682A (zh) * 2020-12-22 2021-04-16 杭州贝嘟科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN113111123A (zh) * 2021-03-12 2021-07-13 北京达佳互联信息技术有限公司 集群业务的调用方法、装置、电子设备、存储介质及产品
CN112698926A (zh) * 2021-03-25 2021-04-23 成都新希望金融信息有限公司 数据处理方法、装置、设备、存储介质及系统
CN112698926B (zh) * 2021-03-25 2021-07-02 成都新希望金融信息有限公司 数据处理方法、装置、设备、存储介质及系统
CN114785713A (zh) * 2022-03-31 2022-07-22 度小满科技(北京)有限公司 一种用于实现Redis集群高可用的方法和代理中间件
CN114785713B (zh) * 2022-03-31 2024-02-23 度小满科技(北京)有限公司 一种用于实现Redis集群高可用的方法和代理中间件
CN115190005A (zh) * 2022-06-30 2022-10-14 南京信息工程大学 一种基于Redis的双宿主系统的高可用方法
CN115190005B (zh) * 2022-06-30 2023-05-16 南京信息工程大学 一种基于Redis的双宿主系统的高可用方法

Similar Documents

Publication Publication Date Title
CN109769028A (zh) Redis集群管理方法、装置、设备及可读存储介质
Yao et al. Fog resource provisioning in reliability-aware IoT networks
EP3605352B1 (en) Short-link parsing method, apparatus and device
CN107483418A (zh) 登录处理方法、业务处理方法、装置及服务器
CN108346028A (zh) 一种业务审批处理方法、装置及系统
CN111817974B (zh) 基于令牌桶的接口限流方法、装置、系统及可读存储介质
CN102799485B (zh) 历史数据的迁移方法及装置
CN108268271A (zh) 微服务的升级方法与升级装置
US9628505B2 (en) Deploying a security appliance system in a high availability environment without extra network burden
CN109067890A (zh) 一种基于docker容器的CDN节点边缘计算系统
CN104156232B (zh) 在线性页面结构下用于页面非线性跳转的方法和设备
CN109191287A (zh) 一种区块链智能合约的分片方法、装置及电子设备
CN109656879A (zh) 大数据资源管理方法、装置、设备及存储介质
CN106060176A (zh) 一种基于混合云的云计算应用架构及云计算服务方法
CN106302211A (zh) 一种网络资源的请求量控制方法和装置
CN106209402A (zh) 一种虚拟网络功能的伸缩方法和设备
CN107018174A (zh) 一种单元化系统服务处理的方法、装置及业务处理系统
CN103647656A (zh) 计费节点负载控制方法、数据访问控制方法及节点
CN106034138A (zh) 一种远程服务调用方法及装置
CN109117609A (zh) 一种请求拦截方法及装置
CN108512768B (zh) 一种访问量的控制方法及装置
CN108471385B (zh) 一种针对分布式系统的流量控制方法及装置
CN111149325A (zh) 用于选择区块链事务的事务选择设备
CN107835181A (zh) 服务器集群的权限管理方法、装置、介质和电子设备
US11418583B2 (en) Transaction process management by dynamic transaction aggregation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination