CN109254981A - 一种分布式缓存系统的数据管理方法和装置 - Google Patents

一种分布式缓存系统的数据管理方法和装置 Download PDF

Info

Publication number
CN109254981A
CN109254981A CN201810979258.9A CN201810979258A CN109254981A CN 109254981 A CN109254981 A CN 109254981A CN 201810979258 A CN201810979258 A CN 201810979258A CN 109254981 A CN109254981 A CN 109254981A
Authority
CN
China
Prior art keywords
key
data object
cache server
cache
data
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.)
Granted
Application number
CN201810979258.9A
Other languages
English (en)
Other versions
CN109254981B (zh
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.)
Advanced Nova Technology Singapore Holdings Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810979258.9A priority Critical patent/CN109254981B/zh
Publication of CN109254981A publication Critical patent/CN109254981A/zh
Application granted granted Critical
Publication of CN109254981B publication Critical patent/CN109254981B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本说明书实施例提供一种分布式缓存系统的数据管理方法和装置,其中,方法可以包括:接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;在本地存储所述基础key与数据对象的缓存项;分别获取每一个所述扩展key对应的目标缓存服务器;构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;向所述扩展key对应的所述目标缓存服务器发送数据存储请求,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。

Description

一种分布式缓存系统的数据管理方法和装置
技术领域
本公开涉及网络技术领域,特别涉及一种分布式缓存系统的数据管理方法和装置。
背景技术
市场上的分布式缓存系统,比如memcached、tair、redis等,都是单key-单value对的缓存系统,即在缓存时是一个key对应一个value进行存储。但是,业务场景中经常遇到的情况包括,对同一个value对象使用多个key查询,类似于数据库的记录既可以通过主键查询,也可以通过唯一索引查询。对于这种多key对应同一个value的情况,一般做法可以是创建value的多份副本,并通过不同的key进行缓存和查询,但是这样带来的问题是,对value的多份副本的管理成本较高,比如,要保证多份副本之间的数据一致性比较麻烦,例如,外部需要保存对应同一value的两个key即key1和key2的对应关系,当其中一个key对应的value修改时,还需要同步修改另一个key对应的value值。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种分布式缓存系统的数据管理方法和装置,以降低多key单value时的管理成本。
具体地,本说明书一个或多个实施例是通过如下技术方案实现的:
第一方面,提供一种分布式缓存系统的数据管理方法,所述分布式缓存系统包括至少一个缓存服务器;所述数据管理方法由任一缓存服务器执行;所述方法包括:
所述缓存服务器接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
在本地存储所述基础key与数据对象的缓存项;
分别获取每一个所述扩展key对应的目标缓存服务器;
构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;
向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
第二方面,提供一种分布式缓存系统的数据管理装置,所述装置应用于分布式缓存系统中的任一缓存服务器;所述装置包括:
请求接收模块,用于接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
本地存储模块,用于在本地存储所述基础key与数据对象的缓存项;
服务器确定模块,用于分别获取每一个扩展key对应的目标缓存服务器;
扩展处理模块,用于构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
第三方面,提供一种分布式缓存系统中的缓存服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
在本地存储所述基础key与数据对象的缓存项;
分别获取每一个所述扩展key对应的目标缓存服务器;
构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;
向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
本说明书一个或多个实施例的分布式缓存系统的数据管理方法和装置,通过在该分布式缓存系统中存储了一份基础key对应的数据对象,而其他的扩展key对应的扩展数据对象只需要指向该基础key即可,就可以最终获取到该数据对象,由于不再有多个value副本,只实际存储了一份value数据,从而节省了对value的管理成本。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一个分布式缓存系统的示意图;
图2为本说明书一个或多个实施例提供的set命令系统处理示意图;
图3为本说明书一个或多个实施例提供的set命令流程示意图;
图4为本说明书一个或多个实施例提供的数据管理方法的流程示意图;
图5为本说明书一个或多个实施例提供的get命令系统处理示意图;
图6为本说明书一个或多个实施例提供的get命令流程示意图;
图7为本说明书一个或多个实施例提供的生命周期管理的处理示意图;
图8为本说明书一个或多个实施例提供的生命周期管理的流程示意图;
图9为本说明书一个或多个实施例提供的数据管理装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
分布式缓存系统可以用于提高访问响应的效率,实现数据的快速访问。图1示例了一个分布式缓存系统,如图1所示,分布式缓存系统11可以包括多个缓存服务器(cacheServer),例如,缓存服务器1、缓存服务器2等。
各个缓存器在缓存数据时,以key/value对的格式存储。如表1:
表1缓存项
Key1 Value1
Key2 Value2
如上述的表1,一个key/value对可以称为一个“缓存项”。例如,“key1-value1”是一个缓存项,“key2-value2”是另一个缓存项。
数据分布式的存储在分布式缓存系统的各个缓存服务器中,并且,该系统可以通过路由表来决定数据存储在哪个服务器。路由表中存储的对应关系是“key的hash值”与“缓存服务器”的对应关系,对于某个缓存项,判断该缓存项要存储在哪个缓存服务器时,可以计算该缓存项中的key的hash值,并通过查找路由表,获知对应该hash值的缓存服务器即确定为要存储的服务器。
分布式缓存系统可以通过多种命令来执行对系统中数据的管理,各种命令都有预定的格式。例如,图1中的客户端12可以通过向某个缓存服务器发送set命令,使得将数据存储在服务器中。又例如,客户端12还可以通过get命令由系统中的缓存服务器获取数据。再例如,系统中的各个缓存服务器自身也可以通过预定的命令对本地存储的数据进行管理,如,缓存项的生命周期管理。
业务场景中存在这样一种查询情况:对于某个value来说,客户端可以使用多个key查询,例如,可以使用key1查询某value,也可以使用key2查询。然而,如上面提到的,key1和key2属于不同的缓存项,并且该不同的缓存项可能是存储在不同的缓存服务器上。如果将value创建多份副本,管理成本会提高。基于此,本说明书至少一个实施例提供了一种分布式缓存系统,该系统对于这种“多个key对应同一value”的情况提供了一种全新的数据管理方式,包括数据在系统中的存储方式、客户端对数据的查询方式、系统本身对数据的管理等。
如下先对该方案涉及到的一些概念解释如下:
数据对象:缓存服务器可以存储key/value的缓存项,其中的value即可以称为数据对象。此外,本例子中的“数据对象”可以是客户端实际要存储至分布式缓存系统的数据,示例性的,该数据可以是1001。
索引key:key/value的缓存项中,其中的key即为索引key,可以是用于客户端检索value使用。例如,若某个客户端要获取数据1001,就可以使用该数据对应的key进行检索。该索引key可以包括两种类型:基础key和扩展key。
基础key:对于“多个key对应同一value”的情况,本说明书至少一个实施例中,该实际要存储的value是存储在分布式缓存系统的其中一个缓存服务器中,并以key/value的缓存项进行存储。在该缓存服务器中存储的key即为基础key,即基础key对应的value就是客户端实际要存储的数据1001。
扩展key:与上述的基础key有所不同的是,扩展key对应存储的value并不是实际存储的数据1001,因为在本说明书至少一个实施例提供的数据管理方法中,为了降低数据管理成本,对于“多个key对应同一value”的情况,分布式缓存系统实际只存储一份value,即1001只存储在其中一个缓存服务器中,并对应基础key存储。而对于基础key之外的其他key,可以称为扩展key。该扩展key与基础key对应的value是不同的,例如,基础key对应的value是数据对象1001,而扩展key对应的value是扩展数据对象。
扩展数据对象:该扩展数据对象的格式可以预先设定,示例性的,其格式可以为KeyRef(key1),其中的KeyRef表示该对象的类型,该对象可以包括一个属性key,即上述的(key1),该属性key的取值是基础key,如key1即基础key。总之,该扩展数据对象包括的信息中要记载客户端实际存储的1001所对应的基础key,相当于,基础key是实际对应1001的key,而扩展key对应的扩展数据对象中要指向该基础key。
缓存项:基础key与对应的数据对象的整体可以称为一个缓存项,一个扩展key与对应的扩展数据对象的整体也可以称为一个缓存项。
目标key:待操作的缓存项中的key可以称为目标key。例如,分布式缓存系统中存储的其中一个缓存项是key1-value1,客户端要读取该缓存项,那么该缓存项中的key1就可以称为目标key。再例如,缓存服务器要对自己存储的过期的缓存项进行清理,当判断缓存项key1-value1是否过期时,该判断操作对应的缓存项中的key1就是目标key。
生命周期管理:缓存服务器中存储的缓存项可以具有生存时长,过期就可以清理掉该缓存项。缓存服务器可以定期执行一次对过期的缓存项的清理,这种操作就可以称为生命周期管理。此外,本说明书至少一个实施例的描述中,有时简写为对目标key进行生命周期管理,实际是对该目标key所在的缓存项判断是否过期,是否该进行清理。
在说明了上述概念的基础上,下面描述分布式缓存系统的数据管理方法:
首先,结合图2和图3来看数据如何在系统中存储。如图2所示,客户端12发起了setkey1 value1 key2的请求,即请求分布式缓存系统存储value1,并以key1和key2作为索引key,这是一个多key的缓存请求。该请求被缓存服务器1接收并处理。请继续参见图2和图3,缓存服务器1检测到该请求是一个value对应多个key的set命令请求,可以执行如下处理:
在步骤300中,缓存服务器1接收数据存储请求,该请求包括:待存储的数据对象和对应所述数据对象的多个索引key。
例如,该数据存储请求可以是set key1 value1 key2。其中的value1即待存储的数据对象,对应的多个索引key包括key1和key2。这里只是以key1和key2为例,实际上可以有更多的key,比如,还可以包括key3和key4等。
在步骤302中,缓存服务器1判断哪个key是自己管理的key。
例如,缓存服务器1可以计算key1的hash值,判断是否是自己负责管理的hash值。如果数据存储请求中携带的所有key都不属于自己管理,可以重定向客户端到正确的缓存服务器。如果数据存储请求中携带的key中包括自己管理的key,并且假设key1由缓存服务器1管理,key2是其他服务器管理,则可以继续执行步骤304。假设key1由缓存服务器1管理,key2是其他服务器管理,那么,key1可以称为基础key,key2可以称为扩展key。
此外,缓存服务器1还可以是默认判断set命令预定位置的key是否是自己管理的key,比如,该预定位置的key是key1,若该key1是由缓存服务器1管理,key1是基础key。缓存服务器1可以继续判断数据存储请求中是否还携带其他的key,若有,则该其他的key是扩展key。若该预定位置的key1不是由缓存服务器1管理,则缓存服务器1可以不再继续判断是否有扩展key,而是表明该请求不应该发送到缓存服务器1,直接重定向客户端到正确的缓存服务器处理。
在步骤304中,缓存服务器1在本地存储key1和value的对应关系。
请参见图2,缓存服务器1在本地创建key1-value的缓存项。
在步骤306中,缓存服务器1获取key2对应的缓存服务器。
例如,缓存服务器1可以计算key2的hash值,并查询路由表,得到该key2的hash值对应的缓存服务器是缓存服务器2,则key2对应缓存服务器2。
在步骤308中,缓存服务器1构造预定对象格式的扩展数据对象,该扩展数据对象包括:属性key,所述属性key的取值是key1。
例如,缓存服务器1构造的扩展数据对象的格式可以是KeyRef(key1),其中,属性key的取值是基础key即key1。
上述的扩展数据对象的格式KeyRef(key1)只是一个示例,不局限于此。比如,还可以是下面的格式:'{type:KeyRef,key:key1}'、'key:key1'。例如,当扩展数据对象的格式是'{type:KeyRef,key:key1}'时,缓存服务器可以解析该格式,获得的结果是:该对象是KeyRef类型的对象,并且基础key是key1。
在步骤310中,缓存服务器1向缓存服务器2发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象。
例如,缓存服务器1可以向缓存服务器2发送set key2 KeyRef(key1)命令。
在步骤312中,缓存服务器2创建key2和扩展数据对象的缓存项。
例如,缓存服务器2创建key2和KeyRef(key1)的缓存项。
同样的,缓存服务器2在创建缓存项前,接收到set key2 KeyRef(key1)命令后,也要先判断key2是否是自己负责管理的key,比如,计算key2的hash值,判断该hash值是否是自己管理的hash值。如果是,表明key2由自己管理。
此外,在步骤300的数据存储请求中,除了基础key即key1之外,只包括一个扩展key即key2,在其他例子中,还可以包括key3和key4等扩展key。对于每一个扩展key,缓存服务器1都可以执行步骤306至310的处理。假设key2、key3和key4都是由缓存服务器2负责管理,那么,缓存服务器1可以向缓存服务器2分别发送三个set命令,如下:
set key2 KeyRef(key1)
set key3 KeyRef(key1)
set key4KeyRef(key1)
在步骤314中,缓存服务器2向缓存服务器1返回存储响应结果,告知存储成功。
在步骤316中,缓存服务器1向客户端反馈存储响应结果。
在上述图3所示的例子中,对应多个key的value在分布式缓存系统存储时,可以只在其中一个缓存服务器存储一份缓存项,而其他缓存服务器存储的扩展key对应的可以是扩展数据对象,该扩展数据对象指向基础key即可,从而避免了存储value的多个副本,降低了管理成本。
在将value(该value对应基础key以数据对象格式存储,对应扩展key以扩展数据对象的格式存储)存储至分布式缓存系统以后,后续还可以涉及到对该value的多种操作。例如,所述的操作可以包括但不限于:以value的索引key读取value,或者,对value所在的缓存项进行生命周期管理。对于以数据对象格式存储的value,与现有的操作方式相同,不再赘述;而对于以扩展数据对象的格式存储的value,缓存服务器在接收到操作对应的命令时,处理流程上会有所改变,因此如下描述对以扩展数据对象的格式存储的value如何进行操作:
图4示例了本说明书至少一个实施例提供的缓存项处理流程,可以包括:
在步骤400中,对于当前待操作的目标key,判断所述目标key对应的数据对象是否是所述预定对象格式的扩展数据对象。
例如,所述的当前待操作的目标key,可以是要读取该目标key对应的value,或者,要对该目标key所在的缓存项进行生命周期管理。
所述的预定对象格式,例如可以是KeyRef类型对象。缓存服务器可以检查下目标key对应的是否是KeyRef类型的扩展数据对象。如果不是,可以按照现有的处理流程执行;若是,则可以执行步骤402。
在步骤402中,若是扩展数据对象,获取所述扩展数据对象中作为属性key的基础key。例如,可以得到KeyRef(key1)中的属性值key1。
在步骤404中,确定所述基础key对应的缓存服务器,所述缓存服务器存储所述基础key与对应的数据对象。
例如,可以计算所述基础key的哈希值,并查询路由表,获得对应所述哈希值的缓存服务器,确定为所述基础key对应的缓存服务器。
在步骤406中,根据当前待执行的操作,请求所述缓存服务器执行对基础key和对应数据对象的数据操作。
实际存储的数据对象value(例如,1001)是以基础key和数据对象的缓存项存储在步骤404确定的缓存服务器中,因此,可以指示该实际存储value的缓存服务器执行对value的操作,例如,获取value的数值,或者,反馈对value的生命周期管理相关的信息。
如下以get命令的处理、以及生命周期管理两个例子,描述存储扩展key和扩展数据对象的缓存服务器如何进行操作处理。
请继续参见图5和图6所示,描述了get命令的处理流程:
在步骤600中,缓存服务器2接收到客户端发送的获取目标key对应的value的请求,该请求可以称为数据获取请求。
例如,缓存服务器2接收到客户端发送的get命令可以是get key2,所述的key2即为目标key。该请求是在请求获取key2对应的数据对象value,并且该请求的value是实际存储的数据对象例如1001。
在步骤602中,缓存服务器2查询key2对应的value。
例如,缓存服务器2在接收到请求后,可以计算key2的hash值,判断是否是自己负责管理的hash值。如果不是,则可以重定向客户端到正确的缓存服务器。如果是,则可以查询key2的缓存项,获取对应的value。
在步骤604中,缓存服务器2判断value的类型是否是预定对象格式的扩展数据对象。若不是,存储的value为实际数据,直接给客户端返回该value即可。如果是扩展数据对象,例如,是KeyRef类型的对象,则继续执行步骤606。
在步骤606中,获取扩展数据对象中的属性key的值。
例如,缓存服务器2获取KeyRef(key1)中的基础key即key1。
在步骤608中,缓存服务器2确定key1对应的缓存服务器。
例如,缓存服务器2可以计算key1的hash值,并查询路由表,获得该hash值对应的服务器是缓存服务器1。
在步骤610中,缓存服务器2向缓存服务器1发送get key1命令,请求获取基础key对应的数据对象。
在步骤612中,缓存服务器1查询key1对应的缓存项。
在步骤614中,缓存服务器1判断key1所在的缓存项是否已经过期。
如果没有过期,可以继续执行步骤616和618。
如果已经过期则缓存服务器1可以清理该缓存项,并在步骤620中向缓存服务器2返回null,即数据对象为空。
在步骤616中,缓存服务器1向缓存服务器2返回key1对应的value1。
在步骤618中,缓存服务器2向客户端返回value1。
在步骤620中,缓存服务器1向缓存服务器2返回null。
在步骤622中,缓存服务器2清理本地存储的目标key对应的缓存项。
例如,缓存服务器2在接收到null时,可以知晓基础key对应的缓存项在缓存服务器侧已经过期,则该缓存服务器2也可以清理本地存储的key2对应的缓存项。该缓存项可以包括key2和对应的KeyRef(key1)。
在步骤624中,缓存服务器2向客户端返回null,通知其查询的数据为空。
请继续参见图7和图8所示,描述了生命周期管理的处理流程,本流程中假设缓存服务器2开始主动进行过期缓存的清理,当前正处理到key2对应的缓存项,可以执行如下流程:
在步骤800中,缓存服务器2查询key2对应的缓存项是否过期。
若否,则可以继续处理下一个缓存项。
如果发现key2的缓存项已经失效,则缓存服务器2并不会立即清理,而是继续执行步骤802。
在步骤802中,判断key2对应的value是否是扩展数据对象。
如果否,则可以按照正常的逻辑直接清理掉该缓存项。
若是扩展数据对象,例如是类型为KeyRef的对象,则继续执行步骤804。
在步骤804中,缓存服务器2获取扩展数据对象中的基础key。
例如,缓存服务器2获取属性key的值key1。
在步骤806中,缓存服务器2确定key1对应的服务器是缓存服务器1。
例如,缓存服务器2可以计算key1的hash值,并查询路由表,得到该hash值对应的服务器是缓存服务器1。
在步骤808中,缓存服务器2向缓存服务器1请求基础key对应的数据对象的剩余生存时间。
例如,缓存服务器2向缓存服务器1发送ttl key1,获取缓存服务器1侧的key1对应的缓存项的剩余生存时间timestamp。
在步骤810中,缓存服务器1向缓存服务器2返回key1的剩余生存时间。
例如,缓存服务器1在接收到请求ttl key1后,可以计算key1的hash值,判断是否是自己管理的hash值。如果是,则可以查询key1对应的缓存项的剩余生存时间timestamp。并将该剩余生存时间返回给缓存服务器2。
缓存服务器2判断剩余生存时间是否为0。如果为0,则继续执行步骤812。否则,可以执行步骤814。
在步骤812中,缓存服务器2清理所述目标key和对应的扩展数据对象。
例如,缓存服务器2清理本地存储的key2对应的缓存项。
在步骤814中,缓存服务器2根据缓存服务器返回的剩余生存时间设置目标key的剩余生存时间。
例如,可以设置key2所在的缓存项的有效期是2*timestamp,等待下次过期时再清理掉key2的缓存项。
上述的get命令、生命周期管理等,只是分布式缓存系统中的一部分命令,本领域人员可以根据上述命令的处理流程,容易的想到在其他命令上增加对多key的支持。比如,其他命令要对包括扩展数据对象的缓存项操作时,也可以先判断下value对象的格式是否是扩展数据对象,如果是,则获取该扩展数据对象中包含的基础key,并确定该基础key对应的缓存服务器。而所述的操作,可以由该基础key对应的缓存服务器来辅助执行,操作的内容可以有多种,本实施例并不限制。比如,若要获取key对应的数据对象,可以让该基础key对应的缓存服务器返回。
此外,本说明书至少一个实施例中提供的分布式缓存系统的数据管理方法,对于多key对应同一个value的情况,在该分布式缓存系统中存储了一份基础key对应的数据对象,而其他的扩展key对应的扩展数据对象只需要指向该基础key即可,就可以最终获取到该数据对象,由于不再有多个value副本,只实际存储了一份value数据,从而节省了对value的管理成本。比如,对于对应同一value的两个key例如key1和key2,假设实际的value数据是对应key1存储,该key1作为基础key,那么,当外部要改变分布式缓存系统中的该value数值时,只需要修改key1对应的value即可,其他的扩展key对应的扩展数据对象不是实际的value数值,不需要修改,成本得到降低。
并且,根据图8的流程所示,在生命周期管理时,各个扩展key的生命周期管理都可以依据基础key的生存管理,使得各个索引key的生命周期管理能够保持一致,实现了基础key和扩展key对应的value的数据一致性。比如,基础key的缓存项已经过期失效了,可是扩展key的缓存项还处于有效期,这样也没关系,因为当客户端请求获取扩展key对应的value数据时,根据上面描述的流程,最终还是要找到基础key对应的value,发现该value已经过期,则扩展key侧也会与基础key侧保持一致,清理掉缓存项。同样的,对于保持数据一致性的原理同上,value更新时,可以只更新基础key对应的value数值,当客户端请求扩展key对应的value时,也会最终转到获取基础key对应的value,数据会保持与基础key的一致。
此外,该方法对现有的分布式缓存系统的影响较小,比如,当缓存服务器接收到set key2 KeyRef(key1)时,按照普通的set命令创建缓存项即可,实施成本较低。
图9是本说明书至少一个实施例提供的分布式缓存系统的数据管理装置的结构图,该装置应用于分布式缓存系统中的任一缓存服务器。如图9所示,该装置可以包括:请求接收模块91、本地存储模块92、服务器确定模块93和扩展处理模块94。
请求接收模块91,用于接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
本地存储模块92,用于在本地存储所述基础key与数据对象的缓存项;
服务器确定模块93,用于分别获取每一个扩展key对应的目标缓存服务器;
扩展处理模块94,用于构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
在一个例子中,扩展处理模块94,还用于:对于当前待操作的目标key,判断所述目标key对应的数据对象是否是所述预定对象格式的扩展数据对象;若是扩展数据对象,获取所述扩展数据对象中作为属性key的基础key;确定所述基础key对应的缓存服务器,所述缓存服务器存储所述基础key与对应的数据对象;根据当前待执行的操作,请求所述基础key对应的缓存服务器执行对基础key和对应数据对象的数据操作。
在一个例子中,所述当前待执行的操作,包括:获取目标key对应的数据对象。扩展处理模块94,在用于请求所述缓存服务器执行对基础key和对应数据对象的数据操作时,包括:向所述缓存服务器请求获取所述基础key对应的数据对象,并在获取到所述数据对象后,将所述数据对象返回给客户端。
在一个例子中,所述当前待执行的操作,包括:对目标key所在的缓存项进行生命周期管理。扩展处理模块94,在用于请求所述缓存服务器执行对基础key和对应数据对象的数据操作时,包括:在确定目标key的缓存项已经过期时,向所述缓存服务器请求获取基础key对应的数据对象的剩余生存时间;若剩余生存时间为零,清理所述目标key和对应的扩展数据对象;否则,根据缓存服务器返回的剩余生存时间设置目标key的剩余生存时间。
本说明书至少一个实施例还提供了一种分布式缓存系统中的缓存服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
在本地存储所述基础key与数据对象的缓存项;
分别获取每一个所述扩展key对应的目标缓存服务器;
构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;
向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
本说明书至少一个实施例还提供了一种分布式缓存系统,所述系统包括:上述的至少一个缓存服务器。
上述方法实施例中所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据采集设备或者数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

Claims (12)

1.一种分布式缓存系统的数据管理方法,所述分布式缓存系统包括至少一个缓存服务器;所述数据管理方法由任一缓存服务器执行;所述方法包括:
所述缓存服务器接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
在本地存储所述基础key与数据对象的缓存项;
分别获取每一个所述扩展key对应的目标缓存服务器;
构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;
向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
2.根据权利要求1所述的方法,所述方法还包括:
对于当前待操作的目标key,判断所述目标key对应的数据对象是否是所述预定对象格式的扩展数据对象;
若是扩展数据对象,获取所述扩展数据对象中作为属性key的基础key;
确定所述基础key对应的缓存服务器,所述缓存服务器存储所述基础key与对应的数据对象;
根据当前待执行的操作,请求所述基础key对应的缓存服务器执行对基础key和对应数据对象的数据操作。
3.根据权利要求2所述的方法,所述确定基础key对应的缓存服务器包括:
计算所述基础key的哈希值;
查询路由表,获得对应所述哈希值的缓存服务器,确定为所述基础key对应的缓存服务器。
4.根据权利要求2所述的方法,所述当前待执行的操作,包括:获取目标key对应的数据对象;
在判断所述目标key对应的数据对象是否是所述预定对象格式的扩展数据对象之前,所述方法还包括:接收客户端发送的数据获取请求,所述数据获取请求中包括:待获取的数据对象对应的所述目标key;
所述请求所述缓存服务器执行对基础key和对应数据对象的数据操作,包括:向所述缓存服务器请求获取所述基础key对应的数据对象,并在获取到所述数据对象后,将所述数据对象返回给客户端。
5.根据权利要求4所述的方法,所述向所述缓存服务器请求获取所述基础key对应的数据对象,包括:
接收所述基础key对应的缓存服务器返回的结果,所述结果是数据对象为空,所述为空表示所述基础key对应的缓存项在缓存服务器侧已经过期;
清理本地存储的目标key对应的缓存项,所述缓存项包括目标key和对应的扩展数据对象。
6.根据权利要求2所述的方法,所述当前待执行的操作,包括:对目标key所在的缓存项进行生命周期管理;
所述判断所述目标key对应的数据对象是否是所述预定对象格式的扩展数据对象之前,所述方法还包括:确定所述目标key的缓存项已经过期;
所述请求所述缓存服务器执行对基础key和对应数据对象的数据操作,包括:向所述缓存服务器请求获取基础key对应的数据对象的剩余生存时间;
若剩余生存时间为零,清理所述目标key和对应的扩展数据对象;
否则,根据缓存服务器返回的剩余生存时间设置目标key的剩余生存时间。
7.一种分布式缓存系统的数据管理装置,所述装置应用于分布式缓存系统中的任一缓存服务器;所述装置包括:
请求接收模块,用于接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
本地存储模块,用于在本地存储所述基础key与数据对象的缓存项;
服务器确定模块,用于分别获取每一个扩展key对应的目标缓存服务器;
扩展处理模块,用于构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
8.根据权利要求7所述的装置,
所述扩展处理模块,还用于:对于当前待操作的目标key,判断所述目标key对应的数据对象是否是所述预定对象格式的扩展数据对象;若是扩展数据对象,获取所述扩展数据对象中作为属性key的基础key;确定所述基础key对应的缓存服务器,所述缓存服务器存储所述基础key与对应的数据对象;根据当前待执行的操作,请求所述基础key对应的缓存服务器执行对基础key和对应数据对象的数据操作。
9.根据权利要求7所述的装置,所述当前待执行的操作,包括:获取目标key对应的数据对象;
所述扩展处理模块,在用于请求所述缓存服务器执行对基础key和对应数据对象的数据操作时,包括:向所述缓存服务器请求获取所述基础key对应的数据对象,并在获取到所述数据对象后,将所述数据对象返回给客户端。
10.根据权利要求7所述的装置,所述当前待执行的操作,包括:对目标key所在的缓存项进行生命周期管理;
所述扩展处理模块,在用于请求所述缓存服务器执行对基础key和对应数据对象的数据操作时,包括:在确定目标key的缓存项已经过期时,向所述缓存服务器请求获取基础key对应的数据对象的剩余生存时间;若剩余生存时间为零,清理所述目标key和对应的扩展数据对象;否则,根据缓存服务器返回的剩余生存时间设置目标key的剩余生存时间。
11.一种分布式缓存系统中的缓存服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
接收数据存储请求,所述数据存储请求中包括:待存储的数据对象和对应所述数据对象的多个索引key;所述多个key包括:基础key和至少一个扩展key,所述基础key是所述缓存服务器负责管理的key,所述扩展key是其他缓存服务器负责管理的key;
在本地存储所述基础key与数据对象的缓存项;
分别获取每一个所述扩展key对应的目标缓存服务器;
构造预定对象格式的扩展数据对象,所述扩展数据对象包括:属性key,所述属性key的取值是所述基础key;
向所述扩展key对应的所述目标缓存服务器发送数据存储请求,所述数据存储请求包括:所述扩展key和所述扩展数据对象,以使得目标缓存服务器存储所述扩展key和扩展数据对象的对应关系。
12.一种分布式缓存系统,所述系统包括:权利要求11所述的至少一个缓存服务器。
CN201810979258.9A 2018-08-27 2018-08-27 一种分布式缓存系统的数据管理方法和装置 Active CN109254981B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810979258.9A CN109254981B (zh) 2018-08-27 2018-08-27 一种分布式缓存系统的数据管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810979258.9A CN109254981B (zh) 2018-08-27 2018-08-27 一种分布式缓存系统的数据管理方法和装置

Publications (2)

Publication Number Publication Date
CN109254981A true CN109254981A (zh) 2019-01-22
CN109254981B CN109254981B (zh) 2021-07-23

Family

ID=65049778

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810979258.9A Active CN109254981B (zh) 2018-08-27 2018-08-27 一种分布式缓存系统的数据管理方法和装置

Country Status (1)

Country Link
CN (1) CN109254981B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110784534A (zh) * 2019-10-25 2020-02-11 北京奇艺世纪科技有限公司 数据服务方法、装置、系统及电子设备
CN110968265A (zh) * 2019-11-05 2020-04-07 北京字节跳动网络技术有限公司 分片扩容方法、装置及电子设备
CN113836177A (zh) * 2020-06-23 2021-12-24 易保网络技术(上海)有限公司 消耗型业务数据的缓存管理
CN114706925A (zh) * 2022-03-30 2022-07-05 苏州浪潮智能科技有限公司 一种多服务多key值的缓存同步方法、装置及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002251313A (ja) * 2001-02-23 2002-09-06 Fujitsu Ltd キャッシュサーバ及び分散キャッシュサーバシステム
CN102833352A (zh) * 2012-09-17 2012-12-19 深圳中兴网信科技有限公司 分布式缓存管理系统和实现分布式缓存管理的方法
CN103078927A (zh) * 2012-12-28 2013-05-01 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN105554121A (zh) * 2015-12-18 2016-05-04 深圳中兴网信科技有限公司 实现分布式缓存系统负载均衡的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002251313A (ja) * 2001-02-23 2002-09-06 Fujitsu Ltd キャッシュサーバ及び分散キャッシュサーバシステム
CN102833352A (zh) * 2012-09-17 2012-12-19 深圳中兴网信科技有限公司 分布式缓存管理系统和实现分布式缓存管理的方法
CN103078927A (zh) * 2012-12-28 2013-05-01 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN105554121A (zh) * 2015-12-18 2016-05-04 深圳中兴网信科技有限公司 实现分布式缓存系统负载均衡的方法及系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110784534A (zh) * 2019-10-25 2020-02-11 北京奇艺世纪科技有限公司 数据服务方法、装置、系统及电子设备
CN110968265A (zh) * 2019-11-05 2020-04-07 北京字节跳动网络技术有限公司 分片扩容方法、装置及电子设备
CN110968265B (zh) * 2019-11-05 2023-08-08 北京字节跳动网络技术有限公司 分片扩容方法、装置及电子设备
CN113836177A (zh) * 2020-06-23 2021-12-24 易保网络技术(上海)有限公司 消耗型业务数据的缓存管理
CN113836177B (zh) * 2020-06-23 2023-05-05 易保网络技术(上海)有限公司 消耗型业务数据的缓存管理
CN114706925A (zh) * 2022-03-30 2022-07-05 苏州浪潮智能科技有限公司 一种多服务多key值的缓存同步方法、装置及系统
CN114706925B (zh) * 2022-03-30 2024-02-02 苏州浪潮智能科技有限公司 一种多服务多key值的缓存同步方法、装置及系统

Also Published As

Publication number Publication date
CN109254981B (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
CN109254981A (zh) 一种分布式缓存系统的数据管理方法和装置
CN105324770B (zh) 有效读出副本
US9794135B2 (en) Managed service for acquisition, storage and consumption of large-scale data streams
EP2002343B1 (en) Multi-cache cooperation for response output caching
CN101493826B (zh) 基于web应用的数据库系统及其数据管理方法
CN101263494B (zh) 用于监控与存储网络中的对象相关的事务的方法和装置
US20150134795A1 (en) Data stream ingestion and persistence techniques
US20130110873A1 (en) Method and system for data storage and management
CN103559319B (zh) 分布式集群文件系统的缓存同步方法和设备
US11263270B1 (en) Heat balancing in a distributed time-series database
CN103607424A (zh) 一种服务器连接方法及服务器系统
CN105335512B (zh) 数据查询方法及装置
CN109040337A (zh) 一种信息查询方法、边缘服务器及信息查询系统
CN106934048A (zh) 数据在线迁移方法、代理节点
CN112162846B (zh) 事务处理方法、设备及计算机可读存储介质
US11250019B1 (en) Eventually consistent replication in a time-series database
US20220374407A1 (en) Multi-tenant partitioning in a time-series database
US11409771B1 (en) Splitting partitions across clusters in a time-series database
US10114874B2 (en) Source query caching as fault prevention for federated queries
CN104636395A (zh) 一种计数处理方法及装置
CN111966482A (zh) 边缘计算系统
CN112749198A (zh) 一种基于版本号的多级数据缓存方法及装置
US7752225B2 (en) Replication and mapping mechanism for recreating memory durations
CN113254460B (zh) 数据处理方法、系统、电子设备及存储介质
US20030115243A1 (en) Distributed process execution system and method

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
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240226

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Advanced Nova Technology (Singapore) Holdings Ltd.

Country or region after: Singapore

Address before: Ky1-9008 Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands, ky1-9008

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands

TR01 Transfer of patent right