缓存数据的处理方法及装置转让专利

申请号 : CN201611074465.7

文献号 : CN106817402B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 费永军马云飞

申请人 : 上海壹账通金融科技有限公司

摘要 :

本发明涉及一种缓存数据的处理方法及装置。上述方法,包括:通过注册中心节点接收终端发送的初始化配置请求,并提取所述初始化配置请求中的访问实例;获取与所述访问实例匹配的配置信息,并将所述配置信息发送给所述终端,以使所述终端根据所述配置信息获取所需访问的存储节点;通过所述存储节点接收所述终端的访问请求;解析所述访问请求,得到主键、所述主键的命名空间以及操作类型;根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。上述缓存数据的处理方法及装置,提高了读取缓存数据的效率且有效降低了服务器压力。

权利要求 :

1.一种缓存数据的处理方法,包括:

通过注册中心节点接收终端发送的初始化配置请求,并提取所述初始化配置请求中的访问实例,所述访问实例根据终端所需访问的数据所属的业务种类确定;

获取与所述访问实例匹配的配置信息,并将所述配置信息发送给所述终端,以使所述终端根据所述配置信息与所述访问实例对应的各个存储节点建立连接后,获取需要进行数据操作的主键,根据所述主键计算槽位,根据所述访问实例的槽在所述对应的各个存储节点的分配情况判断所述槽位所属的存储节点,得到所需访问的存储节点,其中,计算槽位的公式为Slotid=CRC16(key)%N,Slotid表示槽位,N表示每个访问实例对应的槽的个数,key表示主键,对所述主键进行循环冗余校验-16校验计算后,对N取模,得到与所述主键匹配的槽位;

通过所述所需访问的存储节点接收所述终端的访问请求;

解析所述访问请求,得到主键、所述主键的命名空间以及操作类型,所述主键的命名空间用于区分同一存储节点中不同访问实例的数据;

根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。

2.根据权利要求1所述的缓存数据的处理方法,其特征在于,所述存储节点包括主存储节点及备存储节点;

所述通过所述存储节点接收所述终端的访问请求,包括:通过所述主存储节点接收所述终端的访问请求;

在所述通过所述主存储节点接收所述终端的访问请求的步骤之后,还包括:检测所述主存储节点是否发生故障,若发生故障,则获取与所述主存储节点对应的备存储节点;

所述根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理,包括:若所述主存储节点发生故障,则根据所述主键及主键的命名空间从所述备存储节点获取对应的数据,并按照所述操作类型对获取的数据进行处理;

若所述主存储节点没有发生故障,则根据所述主键及主键的命名空间从所述主存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。

3.根据权利要求1所述的缓存数据的处理方法,其特征在于,所述方法还包括:通过所述注册中心节点接收数据迁移请求;

根据所述数据迁移请求获取迁移实例、迁移槽位及目标存储节点;

根据所述迁移实例及所述迁移槽位确定迁移存储节点;

将所述迁移存储节点中存储在与所述迁移槽位匹配的槽的数据迁移至所述目标存储节点。

4.根据权利要求3所述的缓存数据的处理方法,其特征在于,所述将所述迁移存储节点中存储在与所述迁移槽位匹配的槽的数据迁移至所述目标存储节点,包括:在所述迁移存储节点中将迁移槽位标记为预迁移状态;

获取与所述迁移实例关联的终端,并向与所述迁移实例关联的终端发送数据迁移指令;

当接收到所有与所述迁移实例关联的终端返回的确认消息时,将所述迁移槽位标记为迁移状态;

通过所述迁移存储节点将存储在与所述迁移槽位匹配的槽中的数据发送给与所述迁移实例关联的终端,以使所述关联的终端将接收的数据发送给所述目标存储节点;

将所述迁移槽位标记为完成状态。

5.根据权利要求1至4任一所述的缓存数据的处理方法,其特征在于,所述方法,还包括:监控并采集各个存储节点的应用运行指标;

当检测到所述应用运行指标异常,则定位发生应用运行指标异常的存储节点;

关闭所述发生应用运行指标异常的存储节点并生成异常信息。

6.一种缓存数据的处理装置,其特征在于,包括:

第一接收模块,用于通过注册中心节点接收终端发送的初始化配置请求,并提取所述初始化配置请求中的访问实例,所述访问实例根据终端所需访问的数据所属的业务种类确定;

配置信息获取模块,用于获取与所述访问实例匹配的配置信息,并将所述配置信息发送给所述终端,以使所述终端根据所述配置信息与所述访问实例对应的各个存储节点建立连接后,获取需要进行数据操作的主键,根据所述主键计算槽位,根据所述访问实例的槽在所述对应的各个存储节点的分配情况判断所述槽位所属的存储节点,得到所需访问的存储节点,其中,计算槽位的公式为Slotid=CRC16(key)%N,Slotid表示槽位,N表示每个访问实例对应的槽的个数,key表示主键,对所述主键进行循环冗余校验-16校验计算后,对N取模,得到与所述主键匹配的槽位;

第二接收模块,用于通过所述所需访问的存储节点接收所述终端的访问请求;

解析模块,用于解析所述访问请求,得到主键、所述主键的命名空间以及操作类型,所述主键的命名空间用于区分同一存储节点中不同访问实例的数据;

数据处理模块,用于根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。

7.根据权利要求6所述的缓存数据的处理装置,其特征在于,所述存储节点包括主存储节点及备存储节点;

所述第二接收模块,还用于通过所述主存储节点接收所述终端的访问请求;

所述装置还包括:

检测模块,用于检测所述主存储节点是否发生故障,若发生故障,则获取与所述主存储节点对应的备存储节点;

所述数据处理模块,还用于若所述主存储节点发生故障,则根据所述主键及主键的命名空间从所述备存储节点获取对应的数据,并按照所述操作类型对获取的数据进行处理;

所述数据处理模块,还用于若所述主存储节点没有发生故障,则根据所述主键及主键的命名空间从所述主存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。

8.根据权利要求6所述的缓存数据的处理装置,其特征在于,所述第一接收模块,还用于通过所述注册中心节点接收数据迁移请求;

所述装置,还包括:

迁移信息获取模块,用于根据所述数据迁移请求获取迁移实例、迁移槽位及目标存储节点;

确定模块,用于根据所述迁移实例及所述迁移槽位确定迁移存储节点;

迁移模块,用于将所述迁移存储节点中存储在与所述迁移槽位匹配的槽的数据迁移至所述目标存储节点。

9.根据权利要求8所述的缓存数据的处理装置,其特征在于,所述迁移模块,包括:标记单元,用于在所述迁移存储节点中将迁移槽位标记为预迁移状态;

发送单元,用于获取与所述迁移实例关联的终端,并向与所述迁移实例关联的终端发送数据迁移指令;

所述标记单元,还用于当接收到所有与所述迁移实例关联的终端返回的确认消息时,将所述迁移槽位标记为迁移状态;

所述发送单元,还用于通过所述迁移存储节点将存储在与所述迁移槽位匹配的槽中的数据发送给与所述迁移实例关联的终端,以使所述关联的终端将接收的数据发送给所述目标存储节点;

所述标记单元,还用于将所述迁移槽位标记为完成状态。

10.根据权利要求6至9任一所述的缓存数据的处理装置,其特征在于,所述装置,还包括:监控模块,用于监控并采集各个存储节点的应用运行指标;

定位模块,用于当检测到所述应用运行指标异常,则定位发生应用运行指标异常的存储节点;

关闭模块,用于关闭所述发生应用运行指标异常的存储节点并生成异常信息。

说明书 :

缓存数据的处理方法及装置

技术领域

[0001] 本发明涉及计算机技术领域,特别是涉及一种缓存数据的处理方法及装置。

背景技术

[0002] 缓存指的是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话再从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
[0003] 随着互联网需求的日益复杂及访问量的增加,缓存成为解决服务器存储读写压力的一种方案。而在传统的方式中,随着业务量的增大,与业务相关的数据越来越多,这些与业务相关的数据被统一放入缓存中供终端进行访问读取。由于缓存中存储的数据量大且复杂,当终端对服务器缓存中的数据进行访问时,服务器需要花费较长的时间计算并确定数据所存储的位置再进行读取,影响数据读取效率且增大了服务器压力。

发明内容

[0004] 基于此,有必要提供一种缓存数据的处理方法,能够提高缓存中数据的读取效率,并有效降低了服务器压力。
[0005] 此外,还有必要提供一种缓存数据的处理装置,能够提高缓存中数据的读取效率,并有效降低了服务器压力。
[0006] 一种缓存数据的处理方法,包括:
[0007] 通过注册中心节点接收终端发送的初始化配置请求,并提取所述初始化配置请求中的访问实例;
[0008] 获取与所述访问实例匹配的配置信息,并将所述配置信息发送给所述终端,以使所述终端根据所述配置信息获取所需访问的存储节点;
[0009] 通过所述存储节点接收所述终端的访问请求;
[0010] 解析所述访问请求,得到主键、所述主键的命名空间以及操作类型;
[0011] 根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。
[0012] 在其中一个实施例中,所述存储节点包括主存储节点及备存储节点;
[0013] 所述通过所述存储节点接收所述终端的访问请求,包括:
[0014] 通过所述主存储节点接收所述终端的访问请求;
[0015] 在所述通过所述主存储节点接收所述终端的访问请求的步骤之后,还包括:
[0016] 检测所述主存储节点是否发生故障,若发生故障,则获取与所述主存储节点对应的备存储节点;
[0017] 所述根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理,包括:
[0018] 若所述主存储节点发生故障,则根据所述主键及主键的命名空间从所述备存储节点获取对应的数据,并按照所述操作类型对获取的数据进行处理;
[0019] 若所述主存储节点没有发生故障,则根据所述主键及主键的命名空间从所述主存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。
[0020] 在其中一个实施例中,所述方法还包括:
[0021] 通过所述注册中心节点接收数据迁移请求;
[0022] 根据所述数据迁移请求获取迁移实例、迁移槽位及目标存储节点;
[0023] 根据所述迁移实例及所述迁移槽位确定迁移存储节点;
[0024] 将所述迁移存储节点中存储在与所述迁移槽位匹配的槽的数据迁移至所述目标存储节点。
[0025] 在其中一个实施例中,所述将所述迁移存储节点中存储在与所述迁移槽位匹配的槽的数据迁移至所述目标存储节点,包括:
[0026] 在所述迁移存储节点中将迁移槽位标记为预迁移状态;
[0027] 获取与所述迁移实例关联的终端,并向与所述迁移实例关联的终端发送数据迁移指令;
[0028] 当接收到所有与所述迁移实例关联的终端返回的确认消息时,将所述迁移槽位标记为迁移状态;
[0029] 通过所述迁移存储节点将存储在与所述迁移槽位匹配的槽中的数据发送给与所述迁移实例关联的终端,以使所述关联的终端将接收的数据发送给所述目标存储节点;
[0030] 将所述迁移槽位标记为完成状态。
[0031] 在其中一个实施例中,所述方法,还包括:
[0032] 监控并采集各个存储节点的应用运行指标;
[0033] 当检测到所述应用运行指标异常,则定位发生应用运行指标异常的存储节点;
[0034] 关闭所述发生应用运行指标异常的存储节点并生成异常信息。
[0035] 一种缓存数据的处理装置,包括:
[0036] 第一接收模块,用于通过注册中心节点接收终端发送的初始化配置请求,并提取所述初始化配置请求中的访问实例;
[0037] 配置信息获取模块,用于获取与所述访问实例匹配的配置信息,并将所述配置信息发送给所述终端,以使所述终端根据所述配置信息获取所需访问的存储节点;
[0038] 第二接收模块,用于通过所述存储节点接收所述终端的访问请求;
[0039] 解析模块,用于解析所述访问请求,得到主键、所述主键的命名空间以及操作类型;
[0040] 数据处理模块,用于根据所述主键及主键的命名空间从所述存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。
[0041] 在其中一个实施例中,所述存储节点包括主存储节点及备存储节点;
[0042] 所述第二接收模块,还用于通过所述主存储节点接收所述终端的访问请求;
[0043] 所述装置还包括:
[0044] 检测模块,用于检测所述主存储节点是否发生故障,若发生故障,则获取与所述主存储节点对应的备存储节点;
[0045] 所述数据处理模块,还用于若所述主存储节点发生故障,则根据所述主键及主键的命名空间从所述备存储节点获取对应的数据,并按照所述操作类型对获取的数据进行处理;
[0046] 所述数据处理模块,还用于若所述主存储节点没有发生故障,则根据所述主键及主键的命名空间从所述主存储节点中获取对应的数据,并按照所述操作类型对获取的数据进行处理。
[0047] 在其中一个实施例中,所述第一接收模块,还用于通过所述注册中心节点接收数据迁移请求;
[0048] 所述装置,还包括:
[0049] 迁移信息获取模块,用于根据所述数据迁移请求获取迁移实例、迁移槽位及目标存储节点;
[0050] 确定模块,用于根据所述迁移实例及所述迁移槽位确定迁移存储节点;
[0051] 迁移模块,用于将所述迁移存储节点中存储在与所述迁移槽位匹配的槽的数据迁移至所述目标存储节点。
[0052] 在其中一个实施例中,所述迁移模块,包括:
[0053] 标记单元,用于在所述迁移存储节点中将迁移槽位标记为预迁移状态;
[0054] 发送单元,用于获取与所述迁移实例关联的终端,并向与所述迁移实例关联的终端发送数据迁移指令;
[0055] 所述标记单元,还用于当接收到所有与所述迁移实例关联的终端返回的确认消息时,将所述迁移槽位标记为迁移状态;
[0056] 所述发送单元,还用于通过所述迁移存储节点将存储在与所述迁移槽位匹配的槽中的数据发送给与所述迁移实例关联的终端,以使所述关联的终端将接收的数据发送给所述目标存储节点;
[0057] 所述标记单元,还用于将所述迁移槽位标记为完成状态。
[0058] 在其中一个实施例中,所述装置,还包括:
[0059] 监控模块,用于监控并采集各个存储节点的应用运行指标;
[0060] 定位模块,用于当检测到所述应用运行指标异常,则定位发生应用运行指标异常的存储节点;
[0061] 关闭模块,用于关闭所述发生应用运行指标异常的存储节点并生成异常信息。
[0062] 上述缓存数据的处理方法及装置,服务器通过注册中心节点接收终端发送的初始化配置请求,获取与初始化配置请求中的访问实例匹配的配置信息并发送给终端,终端根据配置信息获取所需访问的存储节点,服务器通过该存储节点接收终端的访问请求,并根据解析访问请求得到的主键、主键的命名空间从该存储节点获取对应的数据,并按照解析访问请求得到的操作类型对数据进行处理,利用实例及主键的命名空间分别对缓存中的数据进行物理隔离及逻辑隔离,终端直接根据配置信息确定访问的存储节点并进行访问,无需服务器进行复杂的逻辑计算,提高了读取缓存数据的效率且有效降低了服务器压力。

附图说明

[0063] 图1为一个实施例中缓存数据的处理方法的系统架构图;
[0064] 图2为一个实施例中服务器的内部结构示意图;
[0065] 图3为一个实施例中缓存数据的处理方法的流程示意图;
[0066] 图4为一个实施例中检测主存储节点是否发生故障的流程示意图;
[0067] 图5为一个实施例中接收数据迁移请求并进行数据迁移的流程示意图;
[0068] 图6为一个实施例中将存储在迁移槽位的数据从迁移存储节点迁移至目标存储节点的流程示意图;
[0069] 图7为一个实施例中监控各个存储节点的应用运行指标的流程示意图;
[0070] 图8为一个实施例中缓存数据的处理装置的结构示意图;
[0071] 图9为另一个实施例中缓存数据的处理装置的结构示意图;
[0072] 图10为又一个实施例中缓存数据的处理装置的结构示意图;
[0073] 图11为一个实施例中迁移模块的内部结构示意图;
[0074] 图12为再一个实施例中缓存数据的处理装置的结构示意图。

具体实施方式

[0075] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0076] 图1为一个实施例中缓存数据的处理方法的系统架构图。如图1所示,该系统架构包括终端100及服务器200,服务器200包括注册中心节点202及一个或多个存储节点204。终端100向服务器200发送初始化配置请求。服务器200中的注册中心节点202接收终端100发送的初始化配置请求,并提取初始化配置请求中的访问实例,注册中心节点202获取与该访问实例匹配的配置信息,并将配置信息发送给终端100。终端100接收服务器200返回的配置信息,根据配置信息获取所需访问的存储节点,并向服务器200中的该所需访问的存储节点204发送访问请求。服务器200中的存储节点204接收终端100发送的访问请求,解析该访问请求,得到主键、主键的命名空间以及操作类型。该存储节点204根据主键的命名空间及主键获取对应的数据,并按照操作类型对获取的数据进行处理。
[0077] 图2为一个实施例中上述服务器200的内部结构示意图。如图2所示,该服务器200包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器200的非易失性存储介质存储有操作系统、数据库和缓存数据的处理装置,数据库中存储有与业务相关的数据,该缓存数据的处理装置用于实现适用于服务器200的一种缓存数据的处理方法。该服务器200的处理器用于提供计算和控制能力,支撑整个服务器200的运行。该服务器200的内存储器为非易失性存储介质中的缓存数据的处理装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行缓存数据的处理方法。该服务器200的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端100发送的初始化配置请求等。服务器200可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器200的限定,具体地服务器200可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0078] 如图3所示,提供了一种缓存数据的处理方法,包括以下步骤:
[0079] 步骤S310,通过注册中心节点接收终端发送的初始化配置请求,并提取初始化配置请求中的访问实例。
[0080] 具体地,服务器可为多个服务器组成的服务器集群,可通过在多台服务器上部署Redis存储节点,从而搭建分布式缓存系统,服务器中的分布式缓存系统可包括有注册中心节点及一个或多个存储节点。注册中心节点主要用于协调控制并管理各个由Redis构成的存储节点,注册中心节点可通过ZooKeeper进行构建,其中,ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。存储节点则由Redis进行构建,一个Redis节点即为一个存储节点,其中,Redis是一种key-value(键-值)型的分布式存储系统,可支持多种的value类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)和hash(哈希类型)等,存储和读取数据的速率都很高。
[0081] 终端可通过访问ZooKeeper的地址,向服务器的注册中心节点发送初始化配置请求,初始化配置请求中可包括访问实例(instance)的标识,其中,访问实例的标识可由数字、字母或符号等字符组成,可为访问实例的名称或编号等。在服务器的分布式缓存系统中,一个实例可对应固定个数的槽,并将固定个数的槽配置给不同的Redis存储节点,其中,槽指的是划分的逻辑分区,一个逻辑分区即为一个槽。例如,服务器中的实例均对应600个槽,则可配置实例A对应的槽位为0~300的槽位于Redis存储节点A上,槽位为301-600的槽位于Redis存储节点B,实例B对应的槽位为0~300的槽位于Redis存储节点C上,槽位为301-600的槽位于Redis存储节点D上。可根据实际需求设置不同的实例对应于不同的业务种类,并将与实例对应的业务种类的相关数据存储在该实例配置的Redis存储节点的槽中,终端可根据所需访问的数据所属的业务种类确定对应的访问实例。
[0082] 步骤S320,获取与访问实例匹配的配置信息,并将配置信息发送给终端,以使终端根据配置信息获取所需访问的存储节点。
[0083] 具体地,服务器的注册中心节点接收终端发送的初始化配置请求,可提取初始化配置请求中包含的访问实例的标识,并根据访问实例的标识获取与访问实例匹配的配置信息,配置信息可包括与访问实例对应的Redis存储节点、所有槽位以及槽在对应的各个Redis存储节点的分配情况。
[0084] 服务器的注册中心节点向终端发送与访问实例匹配的配置信息。终端根据接收的配置信息确定与访问实例对应的一个或多个Redis存储节点。终端获取与访问实例对应的Redis存储节点后,可直接根据各个对应的Redis存储节点的地址分别与各个Redis存储节点建立连接。
[0085] 终端与访问实例对应的各个Redis存储节点建立连接后,可获取需要进行数据操作的主键(key),并根据主键计算槽位。计算槽位的公式为:Slotid=CRC16(key)%N,其中,Slotid表示槽位,N表示每个实例对应的槽的个数,终端可先对主键进行CRC16(Cyclic Redundancy Check-16,循环冗余校验-16)校验计算后,对N取模,从而得到与主键匹配的槽位,可确定与主键对应的数据放置在哪个槽中。
[0086] 终端可根据访问实例的槽在各个对应的Redis存储节点的分配情况判断该计算得到的槽位属于哪一个Redis存储节点,从而得到所需访问的Redis存储节点。例如,服务器中的实例均对应600个槽,访问实例A对应的槽位为0~300的槽位于Redis存储节点A上,槽位为301-600的槽位于Redis存储节点B,计算主键得到槽位为320,则可得到所需访问的为Redis存储节点B。终端可通过所需访问的Redis存储节点的地址向该Redis存储节点发送访问请求。
[0087] 步骤S330,通过存储节点接收终端的访问请求。
[0088] 具体地,服务器中终端访问的Redis存储节点可接收到终端发送的访问请求。
[0089] 步骤S340,解析访问请求,得到主键、主键的命名空间以及操作类型。
[0090] 具体地,服务器中的Redis存储节点接收到终端的访问请求后,可对访问请求进行解析,得到主键、主键的命名空间以及操作类型。
[0091] 同一个Redis存储节点可能对应于两个不同的实例,也即,两个不同的业务种类可能需要访问某一部分相同的数据,而在Redis存储节点中为了将不同实例的数据进行区分,可在主键之前添加命名空间,并以“;”、“。”、“/”等符号隔开,防止在主键相同的情况下出现数据访问出错的问题。例如,Redis存储节点X中存储有实例X及实例Y的数据,则在实例X的数据的主键之前添加“insX”的命名空间,实例Y的数据的主键之前添加“insY”的命名空间。
[0092] 操作类型可包括获取(get)、设置(set)、删除(delete)、设置命名空间(SetNameSpace)等,其中,设置命名空间可包括为主键添加、修改或删除命名空间等操作。
[0093] 步骤S350,根据主键及主键的命名空间从存储节点中获取对应的数据,并按照操作类型对获取的数据进行处理。
[0094] 具体地,服务器的Redis存储节点可根据解析得到的主键及主键的命名空间读取对应的数据,并根据操作类型对读取的数据进行处理,若操作类型为获取,则将读取的数据发送给终端。
[0095] 上述缓存数据的处理方法,服务器通过注册中心节点接收终端发送的初始化配置请求,获取与初始化配置请求中的访问实例匹配的配置信息并发送给终端,终端根据配置信息获取所需访问的存储节点,服务器通过该存储节点接收终端的访问请求,并根据解析访问请求得到的主键、主键的命名空间从该存储节点获取对应的数据,并按照解析访问请求得到的操作类型对数据进行处理,利用实例及主键的命名空间分别对缓存中的数据进行物理隔离及逻辑隔离,终端直接根据配置信息确定访问的存储节点并进行访问,无需服务器进行复杂的逻辑计算,提高了读取缓存数据的效率且有效降低了服务器压力。
[0096] 在一个实施例中,上述缓存数据的处理方法,还包括以下步骤:
[0097] 步骤S402,通过主存储节点接收终端的访问请求。
[0098] 具体地,服务器的每个Redis存储节点中可包括一个Redis主存储节点(master)及一个或多个Redis备存储节点(slave),并组成一个组(group),同一个组内的Redis主存储节点及Redis备存储节点进行数据冗余备份,从而保持数据同步。终端获取所需访问的Redis存储节点后,,通常获取该Redis存储节点对应的组中的Redis主存储节点的地址,并直接访问组中的Redis主存储节点。
[0099] 步骤S404,检测主存储节点是否发生故障,若是,则执行步骤S406,若否,则执行步骤S412。
[0100] 具体地,服务器中的Redis主存储节点接收到终端发送的访问请求后,可通过注册中心节点检测Redis主存储节点是否发生故障。注册中心节点可向该Redis主存储节点发送心跳包,若是在预设时间内,例如1s、2s内等,未接收该Redis主存储节点返回的响应信息,则判定该Redis主存储节点发生故障,并获取与该Redis主存储节点对应的任一Redis备存储节点进行数据处理。
[0101] 步骤S406,获取与主存储节点对应的备存储节点。
[0102] 步骤S408,通过备存储节点解析访问请求,得到主键、主键的命名空间以及操作类型。
[0103] 具体地,若Redis主存储节点发生故障,可获取与该Redis主存储节点对应的任一Redis备存储节点,并切换至该Redis备存储节点,由该Redis备存储节点解析访问请求,得到主键、主键的命名空间以及操作类型。
[0104] 步骤S410,根据主键及主键的命名空间从备存储节点获取对应的数据,并按照操作类型对获取的数据进行处理。
[0105] 具体地,该Redis备存储节点可根据主键及主键的命名空间读取对应的数据,并按照操作类型对获取的数据进行操作处理。
[0106] 步骤S412,通过主存储节点解析访问请求,得到主键、主键的命名空间以及操作类型。
[0107] 具体地,注册中心节点向Redis主存储节点发送心跳包,若在预设时间内接收到该Redis主存储节点返回的响应信息,则判定该Redis主存储节点没有发生故障。Redis主存储节点解析访问请求,得到主键、主键的命名空间以及操作类型,根据主键及主键的命名空间读取对应的数据,并按照操作类型对读取的数据进行操作处理。
[0108] 步骤S414,根据主键及主键的命名空间从主存储节点中获取对应的数据,并按照操作类型对获取的数据进行处理。
[0109] 在本实施例,当Redis主存储节点发生故障,则自动切换成对应的Redis备存储节点进行数据处理,保证数据处理的有效性,并提取数据处理效率。
[0110] 如图5所示,在一个实施例中,上述缓存数据的处理方法,还包括以下步骤:
[0111] 步骤S502,通过注册中心节点接收数据迁移请求。
[0112] 具体地,当Redis存储节点需要进行扩容、缩容,或是出现宕机故障时,可进行数据迁移,系统管理员可通过终端向服务器的注册中心节点发送数据迁移请求。数据迁移请求中可包括迁移实例、迁移槽位及目标Redis存储节点,其中,迁移实例指的是进行数据迁移的实例,迁移槽位指的是迁移实例中进行数据迁移的槽位,目标Redis存储节点指的是将数据进行迁移最终存储的Redis存储节点。
[0113] 步骤S504,根据数据迁移请求获取迁移实例,迁移槽位及目标存储节点。
[0114] 步骤S506,根据迁移实例及迁移槽位确定迁移存储节点。
[0115] 具体地,服务器的注册中心节点可获取与迁移实例匹配的配置信息,并根据配置信息获取迁移实例中的槽在对应的各个Redis存储节点的分配情况。根据迁移实例中的槽在对应的各个Redis存储节点的分配情况,可判断与迁移槽位匹配的槽位于哪一个Redis存储节点,从而得到迁移Redis存储节点。例如,迁移实例A对应的槽位为0~300的槽位于Redis存储节点A上,槽位为301-600的槽位于Redis存储节点B,迁移槽位为200~300,则可得到迁移Redis存储节点为Redis存储节点A。
[0116] 步骤S508,将迁移存储节点中存储在与迁移槽位匹配的槽的数据迁移至目标存储节点。
[0117] 具体地,服务器可依次按照迁移槽位的顺序,将迁移存储节点中,与迁移槽位匹配的槽中存储的数据迁移至目标存储节点。
[0118] 如图6所示,在一个实施例中,步骤S508将迁移存储节点中存储在与迁移槽位匹配的槽的数据迁移至目标存储节点,包括:
[0119] 步骤S602,在迁移存储节点中将迁移槽位标记为预迁移状态。
[0120] 具体地,服务器的注册中心节点可依照迁移槽位的顺序,依次对迁移Redis存储节点中与迁移槽位匹配的槽中存储的数据进行迁移,每进行一个槽的数据迁移时,可将该迁移槽位先标记为预迁移状态(pre_migrate),记录迁移Redis存储节点中与迁移槽位对应的槽的数据迁移状态。
[0121] 步骤S604,获取与迁移实例关联的终端,并向与迁移实例关联的终端发送数据迁移指令。
[0122] 具体地,服务器的注册中心节点可记录所有向其发送初始化配置请求的终端,并根据初始化配置请求中的访问实例建立终端与实例的关联关系。在进行数据迁移时,注册中心节点可获取与迁移实例具有关联关系的终端,并向各个与迁移实例关联的终端发送数据迁移指令。
[0123] 步骤S606,当接收到所有与迁移实例关联的终端返回的确认消息时,将迁移槽位标记为迁移状态。
[0124] 具体地,当注册中心节点接收到所有与迁移实例关联的终端返回的确认消息时,可将要进行数据迁移的槽的槽位从预迁移状态改为迁移状态(migrate),并进行数据迁移。
[0125] 步骤S608,通过迁移存储节点将存储在与迁移槽位匹配的槽中的数据发送给与迁移实例关联的终端,以使关联的终端将接收的数据发送给目标存储节点。
[0126] 具体地,注册中心节点可向迁移Redis存储节点发送迁移命令,迁移Redis存储节点根据迁移命令将要进行数据迁移的槽中存储的数据,按照主键依次发送给各个与迁移实例关联的终端,终端再将接收到的数据发送至目标Redis存储节点,直至该进行数据迁移的槽中存储的数据全部迁移完成。数据迁移完成后,可删除完成数据迁移的槽中存储的数据。
[0127] 步骤S610,将迁移槽位标记为完成状态。
[0128] 具体地,当该进行数据迁移的槽中的数据全部迁移完成,注册中心节点可将该槽的迁移槽位从迁移状态修改为完成状态(online),并进行下一个槽位匹配的槽的数据迁移。当所有迁移槽位均被标记为完成状态,则数据迁移任务完成,注册中心节点可向系统管理员所在的终端发送迁移完成信息。
[0129] 在本实施中,可通过与迁移实例关联的终端进行数据迁移,即便在Redis存储节点发生宕机故障时也可完成数据迁移,方便快捷,且可减少数据在迁移过程中发生丢失的情况。
[0130] 如图7所示,在一个实施例中,上述缓存数据的处理方法,还包括以下步骤:
[0131] 步骤S702,监控并采集各个存储节点的应用运行指标。
[0132] 具体地,可基于influxdb时序数据库在服务器中搭建实时监控系统,实时监控并采集服务器中各个Redis存储节点的应用运行指标,应用运行指标可包括机器状态信息、请求访问情况等,其中,机器状态信息可包括CPU(Central Processing Unit,中央处理器)负载、内存信息、磁盘使用率等,请求访问情况可包括请求个数、响应时间及处理状态等。
[0133] 步骤S704,当检测到应用运行指标异常,则定位发生应用运行指标异常的存储节点。
[0134] 具体地,通过监控系统对各个Redis存储节点进行实时监控并采集相应的应用运行指标,可将采集的应用运行指标的各个数据与对应的预设指标正常范围进行比较,判断应用运行指标的各个数据是否发生异常,当应用运行指标中的数据没有处于对应的预设指标正常范围内,则说明该数据发生异常。例如,采集到Redis存储节点A的请求个数为1万个,而请求个数对应的预设指标正常范围为0~8000个,采集的请求个数超出对应的预设指标正常范围,说明发生异常。可预先设置各个Redis存储节点的请求个数、访问频率等对应的指标正常范围,对数据访问进行限流控制,保障服务器各个Redis存储节点的性能及响应速度。
[0135] 步骤S706,关闭发生应用运行指标异常的存储节点并生成异常信息。
[0136] 具体地,当检测到应用运行指标异常,可对发生应用运行指标异常的Redis存储节点进行定位,并关闭该发生应用运行指标异常的Redis存储节点,保证服务器Redis存储节点的性能。可根据发生应用运行指标异常的Redis存储节点生成相应的异常信息,其中,异常信息可包括发生应用运行指标异常的Redis存储节点对应的组标识、异常的应用运行指标等。生成异常信息后,服务器可将异常信息发送至系统管理员所在的终端,进行故障处理。
[0137] 在本实施例中,可监控并采集各个存储节点的应用运行指标,当发生应用运行指标异常,可对存储节点进行快速定位并关闭,保障服务器中各个存储节点的性能,减轻服务器压力。
[0138] 如图8所示,提供了一种缓存数据的处理装置,包括第一接收模块810、配置信息获取模块820、第二接收模块830、解析模块840及数据处理模块850。
[0139] 第一接收模块810,用于通过注册中心节点接收终端发送的初始化配置请求,并提取初始化配置请求中的访问实例。
[0140] 配置信息获取模块820,用于获取与访问实例匹配的配置信息,并将配置信息发送给终端,以使终端根据配置信息获取所需访问的存储节点。
[0141] 第二接收模块830,用于通过存储节点接收所述终端的访问请求。
[0142] 解析模块840,用于解析访问请求,得到主键、主键的命名空间以及操作类型。
[0143] 数据处理模块850,用于根据主键及主键的命名空间从存储节点中获取对应的数据,并按照操作类型对获取的数据进行处理。
[0144] 上述缓存数据的处理装置,服务器通过注册中心节点接收终端发送的初始化配置请求,获取与初始化配置请求中的访问实例匹配的配置信息并发送给终端,终端根据配置信息获取所需访问的存储节点,服务器通过该存储节点接收终端的访问请求,并根据解析访问请求得到的主键、主键的命名空间从该存储节点获取对应的数据,并按照解析访问请求得到的操作类型对数据进行处理,利用实例及主键的命名空间分别对缓存中的数据进行物理隔离及逻辑隔离,终端直接根据配置信息确定访问的存储节点并进行访问,无需服务器进行复杂的逻辑计算,提高了读取缓存数据的效率且有效降低了服务器压力。
[0145] 在一个实施例中,存储节点包括主存储节点及备存储节点。如图9所示,上述缓存数据的处理装置,除了包括第一接收模块810、配置信息获取模块820、第二接收模块830、解析模块840及数据处理模块850,还包括检测模块860。
[0146] 第二接收模块830,还用于通过主存储节点接收终端的访问请求。
[0147] 检测模块860,用于检测主存储节点是否发生故障,若发生故障,则获取与主存储节点对应的备存储节点。
[0148] 数据处理模块850,还用于若主存储节点发生故障,则根据主键及主键的命名空间从备存储节点获取对应的数据,并按照操作类型对获取的数据进行处理。
[0149] 数据处理模块850,还用于若主存储节点没有发生故障,则根据主键及主键的命名空间从主存储节点中获取对应的数据,并按照操作类型对获取的数据进行处理。
[0150] 在本实施例,当Redis主存储节点发生故障,则自动切换成对应的Redis备存储节点进行数据处理,保证数据处理的有效性,并提取数据处理效率。
[0151] 如图10所示,在一个实施例中,上述缓存数据的处理装置,除了包括第一接收模块810、配置信息获取模块820、第二接收模块830、解析模块840、数据处理模块850及检测模块
860,还包括迁移信息获取模块870、确定模块880及迁移模块890。
[0152] 第一接收模块810,还用于通过注册中心节点接收数据迁移请求。
[0153] 迁移信息获取模块870,用于根据数据迁移请求获取迁移实例、迁移槽位及目标存储节点。
[0154] 确定模块880,用于根据迁移实例及迁移槽位确定迁移存储节点。
[0155] 迁移模块890,用于将迁移存储节点存储在与迁移槽位匹配的槽的数据迁移至目标存储节点。
[0156] 如图11所示,在一个实施例中,迁移模块890包括标记单元892及发送单元894。
[0157] 标记单元892,用于在迁移存储节点中将迁移槽位标记为预迁移状态。
[0158] 发送单元894,用于获取与迁移实例关联的终端,并向与迁移实例关联的终端发送数据迁移指令。
[0159] 标记单元892,还用于当接收到所有与迁移实例关联的终端返回的确认消息时,将迁移槽位标记为迁移状态。
[0160] 发送单元894,还用于通过迁移存储节点将存储在与迁移槽位匹配的槽中的数据发送给与迁移实例关联的终端,以使关联的终端将接收的数据发送给目标存储节点。
[0161] 标记单元892,还用于将迁移槽位标记为完成状态。
[0162] 在本实施中,可通过与迁移实例关联的终端进行数据迁移,即便在Redis存储节点发生宕机故障时也可完成数据迁移,方便快捷,且可减少数据在迁移过程中发生丢失的情况。
[0163] 如图12所示,在一个实施例中,上述缓存数据的处理装置,除了包括第一接收模块810、配置信息获取模块820、第二接收模块830、解析模块840、数据处理模块850、检测模块
860、迁移信息获取模块870、确定模块880及迁移模块890,还包括监控模块900、定位模块
910及关闭模块920。
[0164] 监控模块900,用于监控并采集各个存储节点的应用运行指标。
[0165] 定位模块910,用于当检测到应用运行指标异常,则定位发生应用运行指标异常的存储节点。
[0166] 关闭模块920,用于关闭发生应用运行指标异常的存储节点并生成异常信息。
[0167] 在本实施例中,可监控并采集各个存储节点的应用运行指标,当发生应用运行指标异常,可对存储节点进行快速定位并关闭,保障服务器中各个存储节点的性能,减轻服务器压力。
[0168] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
[0169] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0170] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。