Redis集群管理方法、装置、设备及可读存储介质与流程

文档序号:17694600发布日期:2019-05-17 21:22阅读:238来源:国知局
Redis集群管理方法、装置、设备及可读存储介质与流程

本发明涉及redis集群的技术领域,尤其涉及一种redis集群管理方法、装置、设备及可读存储介质。



背景技术:

由于单台redis服务器的内存管理能力有限,redis服务器发生故障将直接影响大面积业务。为了获取更好的缓存性能及扩展型,通过搭建redis集群来满足需求。目前,主要通过twemproxy和redissentinel搭建redis集群,即twemproxy是一个支持redis协议的单线程的代理程序,通过引入代理层,封装后端真实的redis存储分片,并通过redissentinel实现failover保证redis存储分片的高可用。

然而,通过twemproxy和redissentinel搭建的redis集群属于中心化管理架构,redissentinel容易出现异常,而redissentinel作为保证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-volatilememory),例如磁盘存储器。存储器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原生的rediscluster,rediscluster是redis官方提供的去中心化管理架构的集群解决方案,每个数据分区负责整体数据的一部分,部署结构和容量均固定,可选地,数据分区由9个redis节点组成。在本实施例中,该redis集群代理组件是在netty的通信框架基础上,由面向客户端和redis服务节点的编码器通过实现redis通信协议,以及封装底层去中心化rediscluster请求转移的交互协议,达到屏蔽数据存储细节得到的高性能代理组件,其中,该netty是由jboss(基于j2ee的开放源代码的应用服务器)提供的一个java开源框架,该netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。通过面向客户端和redis服务节点的编码器兼容redis通信协议得到redis集群代理组件,在容量伸缩场景下实现安全、高效的数据迁移,提高运维效率、对业务透明。

当监测到数据访问请求时,该redis集群管理设备通过该redis集群代理组件和该数据访问请求中的数据键值,即key值,确定未宕机的目标数据分区。即,当监测到数据访问请求时,确定所述数据访问请求中的数据键值;通过所述redis集群代理组件对所述数据键值进行算法处理,得到处理结果;依据所述处理结果确定未宕机的目标数据分区。作为一种实施方式,redis集群管理设备中存储有哈希圆环,该哈希圆环由整个哈希值(2147483647个哈希值)空间组成,且各数据分区均作为节点分布在该哈希圆环上,则确定未宕机的目标数据分区的方式具体可以为:当监测到数据访问请求时,该redis集群管理设备,确定该数据访问请求中的数据键值,并通过该redis集群代理组件对该数据键值进行哈希计算,得到目标哈希值,然后确定该目标哈希值在预设的哈希圆环上的位置,并从该位置开始沿着该哈希圆环顺时针方向移动,获取首次在哈希圆环上遇到的数据分区,最后判断该数据分区是否宕机,如果该数据分区宕机,则继续沿着该哈希圆环顺时针方向移动,将在该哈希圆环上遇到的未宕机的数据分区确定为目标数据分区,如果该数据分区未宕机,则将该数据分区确定为目标数据分区,即将首次遇到的数据分区确定为目标数据分区。

此外,作为另一种实施方式,还可选为:

当监测到数据访问请求时,确定所述数据访问请求中的数据键值;

通过所述redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;

依据所述取模结果确定未宕机的目标数据分区。

具体地,通过该redis集群代理组件获取redis集群管理设备中包含的数据分区的个数,即数据分区个数,并用该数据键值对该数据分区个数取模,得到取模结果(余数),然后获取预设的取模结果与数据分区的映射关系表,并查询该映射关系表,获取该取模结果对应的数据分区,且判断该取模结果对应的数据分区是否宕机,如果该取模结果对应的数据分区未宕机,则将该取模结果对应的数据分区确定为目标数据分区,如果该取模结果对应的数据分区宕机,则从未宕机的数据分区中选择一个数据分区作为目标数据分区。

需要说明的是,采用哈希算法的方式,一致性哈希是会动态路由到下一个可用数据分区,即使有数据分区出现宕机,也可以自动路由到下一数据分区,无需等待宕机的数据分区恢复,效率和智能性更高。

步骤s102,将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;

步骤s103,将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的redis节点。

本实施例中,在确定目标数据分区之后,该redis集群管理设备将该数据访问请求路由到该目标数据分区,并对该数据键值进行处理,得到哈希槽编号(即采用crc(cyclicredundancycheck,循环冗余校验)算法对该数据键值进行计算,并用计算得到的结果对哈希槽总数(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原生的rediscluster,rediscluster是redis官方提供的去中心化管理架构的集群解决方案,每个数据分区负责整体数据的一部分,部署结构和容量均固定,可选地,数据分区由9个redis节点组成。在本实施例中,该redis集群代理组件是在netty的通信框架基础上,由面向客户端和redis服务节点的编码器通过实现redis通信协议,以及封装底层去中心化rediscluster请求转移的交互协议,达到屏蔽数据存储细节得到的高性能代理组件,其中,该netty是由jboss(基于j2ee的开放源代码的应用服务器)提供的一个java开源框架,该netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。通过面向客户端和redis服务节点的编码器兼容redis通信协议得到redis集群代理组件,在容量伸缩场景下实现安全、高效的数据迁移,提高运维效率、对业务透明。

当监测到数据访问请求时,该确定模块101通过该redis集群代理组件和该数据访问请求中的数据键值,即key值,确定未宕机的目标数据分区。即当监测到数据访问请求时,确定所述数据访问请求中的数据键值;通过所述redis集群代理组件对所述数据键值进行算法处理,得到处理结果;依据所述处理结果确定未宕机的目标数据分区。作为一种实施方式,redis集群管理设备中存储有哈希圆环,该哈希圆环由整个哈希值(2147483647个哈希值)空间组成,且各数据分区均作为节点分布在该哈希圆环上,则确定未宕机的目标数据分区的方式具体可以为:当监测到数据访问请求时,通过该redis集群代理组件,确定该数据访问请求中的数据键值,并对该数据键值进行哈希计算,得到目标哈希值,然后确定该目标哈希值在预设的哈希圆环上的位置,并从该位置开始沿着该哈希圆环顺时针方向移动,获取首次在哈希圆环上遇到的数据分区,最后判断该数据分区是否宕机,如果该数据分区宕机,则继续沿着该哈希圆环顺时针方向移动,将在该哈希圆环上遇到的未宕机的数据分区确定为目标数据分区,如果该数据分区未宕机,则将该数据分区确定为目标数据分区,即将首次遇到的数据分区确定为目标数据分区。

此外,作为另一种实施方式,还可选为:

当监测到数据访问请求时,确定所述数据访问请求中的数据键值;

通过所述redis集群代理组件获取数据分区个数,并用所述数据键值对所述数据分区个数取模,得到取模结果;

依据所述取模结果确定未宕机的目标数据分区。

具体地,通过该redis集群代理组件获取redis集群管理设备中包含的数据分区的个数,即数据分区个数,并用该数据键值对该数据分区个数取模,得到取模结果(余数),然后获取预设的取模结果与数据分区的映射关系表,并查询该映射关系表,获取该取模结果对应的数据分区,且判断该取模结果对应的数据分区是否宕机,如果该取模结果对应的数据分区未宕机,则将该取模结果对应的数据分区确定为目标数据分区,如果该取模结果对应的数据分区宕机,则从未宕机的数据分区中选择一个数据分区作为目标数据分区。

需要说明的是,采用哈希算法的方式,一致性哈希是会动态路由到下一个可用数据分区,即使有数据分区出现宕机,也可以自动路由到下一数据分区,无需等待宕机的数据分区恢复,效率和智能性更高。

路由模块102,用于将所述数据访问请求路由到所述目标数据分区,并对所述数据键值进行处理,得到哈希槽编号;

所述路由模块102,还用于将所述数据访问请求路由到所述目标数据分区中与所述哈希槽编号对应的redis节点。

本实施例中,在确定目标数据分区之后,该redis集群管理设备将该数据访问请求路由到该目标数据分区,并对该数据键值进行处理,得到哈希槽编号(即采用crc(cyclicredundancycheck,循环冗余校验)算法对该数据键值进行计算,并用计算得到的结果对哈希槽总数(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、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1