一种数据缓存方法、装置及客户端与流程

文档序号:19248331发布日期:2019-11-27 19:53阅读:161来源:国知局
一种数据缓存方法、装置及客户端与流程

本申请涉及计算机领域,具体涉及数据缓存方法、装置及客户端。



背景技术:

分布式缓存服务在软件系统中广泛应用。例如,对于大规模系统的用户session信息会采用分布式缓存服务进行缓存,以提高系统扩展性。目前,当在多机房部署缓存服务时,通常使用主-从模式缓存服务来对需要缓存的数据进行缓存和读取缓存数据。在主-从模式缓存服务中,利用一个主缓存服务去接收所有缓存请求,对每一个缓存请求中的需要缓存的数据进行缓存。主缓存服务需要将被缓存的数据同步至从缓存服务,由从缓存服务接收对缓存数据的读取请求来读取缓存数据。

然而,主-从模式缓存服务存在写操作单点问题。主缓存服务只有一个,当主缓存服务宕机时,所有缓存请求无法得到处理。



技术实现要素:

本申请实施例提供了数据缓存方法和装置。

第一方面,本申请实施例提供了数据缓存方法,该方法包括:客户端响应于业务方的缓存请求,基于独立缓存服务的部署位置与所述客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务,所述缓存请求包括:需要缓存的数据;将所述需要缓存的数据发送至所述目标独立缓存服务,以利用所述目标独立缓存服务对所述需要缓存的数据进行缓存;响应于所述需要缓存的数据被缓存,生成所述需要缓存的数据的特征标识,所述需要缓存的数据的特征标识包括:需要缓存的数据的缓存位置;将所述需要缓存的数据的特征标识提供给所述业务方,以使得所述业务方利用所述特征标识从所述需要缓存的数据的缓存位置获取所述需要缓存的数据。

第二方面,本申请实施例提供了数据缓存装置,安装于客户端上,数据缓存装置包括:响应单元,被配置为响应于业务方的缓存请求,基于独立缓存服务的部署位置与所述客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务,所述缓存请求包括:需要缓存的数据;发送单元,被配置为将所述需要缓存的数据发送至所述目标独立缓存服务,以利用所述目标独立缓存服务对所述需要缓存的数据进行缓存;生成单元,被配置为响应于所述需要缓存的数据被缓存,生成所述需要缓存的数据的特征标识,所述需要缓存的数据的特征标识包括:需要缓存的数据的缓存位置;提供单元,被配置为将所述需要缓存的数据的特征标识提供给所述业务方,以使得所述业务方利用所述特征标识从所述需要缓存的数据的缓存位置获取所述需要缓存的数据。

本申请实施例提供的数据缓存方法和装置,至少具有以下优点:

通过在多个机房分别部署独立缓存服务,每一个独立缓存服务均可以对需要缓存的数据进行缓存以及读取缓存数据,避免了因为只有一个主缓存服务对数据进行缓存而造成的写操作单点问题,提升缓存的稳定性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了本申请实施例提供的数据缓存方法的一个实施例的流程图;

图2示出了本申请实施例提供的数据缓存装置的一个结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,其示出了本申请实施例提供的数据缓存方法的流程图。各个步骤可以由客户端执行,该方法包括以下步骤:

步骤101,响应于业务方的缓存请求,基于独立缓存服务的部署位置与客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务。

在本申请中,可以在多个机房中分别部署客户端。可以利用客户端对需要缓存的数据进行缓存,因此,客户端也可称之为缓存客户端。业务方的缓存请求由多个机房中的哪一个客户端进行响应并且执行步骤101-步骤104,可以根据各个客户端的位置与业务方的服务器的距离、客户端的忙碌程度等多个因素确定,在本申请中不做限定。

在本申请中,可以在多个机房中分别部署缓存服务。由于机房间部署的缓存服务为独立部署,缓存服务之间不存在从属关系,因此,部署的缓存服务可以称之为独立缓存服务。在多个机房中分别部署的缓存服务构成多机房独立缓存服务。

在本申请中,需要缓存的数据可以为用户的数据,例如用户的session信息。

在本申请中,当需要缓存数据时,可以由业务方的服务器首先向客户端发送缓存请求。缓存请求包括:需要缓存的数据。

可选地,缓存请求还包括:缓存有效期。在后续步骤中,缓存有效期可以与需要缓存的数据一起被发送至目标独立缓存服务,在由目标独立缓存服务将需要缓存的数据在缓存位置存储之后,可以由目标独立缓存服务记录该缓存有效期。当目标独立缓存服务确定需要缓存的数据在缓存位置上存储的时长超过缓存有效期时,可以由目标独立缓存服务删除存储在缓存位置上的需要缓存的数据。

在本申请中,可以将用于对需要缓存的数据进行缓存的独立缓存服务称之为目标缓存服务。客户端在接收到缓存请求之后,可以响应于缓存请求,由客户端首先基于各个独立缓存服务的部署位置与客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务。

在本申请中,可以预先在配置中心的服务器上存储各个独立缓存服务的地址信息。独立缓存服务的地址信息包括:独立缓存服务的部署位置。

当从多个独立缓存服务中选取出目标独立缓存服务时,客户端可以首先获取配置中心的服务器上的各个独立缓存服务的地址信息,确定各个独立缓存服务的部署位置,然后,可以基于各个独立缓存服务的部署位置与客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务。

在一些实施例中,当基于独立缓存服务的部署位置与客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务时,可以首先判断部署位置与客户端的位置最近的独立缓存服务是否可以用于缓存需要缓存的数据。换言之,首先判断部署位置与客户端的位置的距离最近的独立缓存服务是否可以用于对需要缓存的数据进行缓存。

当部署位置与客户端的位置的距离最近的独立缓存服务可以用于对需要缓存的数据进行缓存时,可以将部署位置与客户端的位置的距离最近的独立缓存服务作为目标独立缓存服务。

例如,通常部署位置与客户端的位置的距离最近的独立缓存服务通常与客户端位于同一个机房。当一个业务方需要缓存数据时,该业务方将需要缓存的数据发送至一个客户端,该客户端可以将部署位置在该客户端所在的机房内的独立缓存服务确定为目标独立缓存服务。

在本申请中,当部署位置与客户端的位置的距离最近的独立缓存服务可以用于对需要缓存的数据进行缓存时,可以利用与客户端的位置最近的独立缓存服务完成需要缓存的数据的写入和读取,从而,快速地完成需要缓存的数据的写入和读取,向业务方提供高性能的缓存服务。当部署位置与客户端的位置的距离最近的独立缓存服务无法用于对需要缓存的数据进行缓存时,可以从所有可用于对需要缓存的数据进行缓存的独立缓存服务中选取出目标独立缓存服务。在一些实施例中,当部署位置与客户端的位置的距离最近的独立缓存服务无法用于对需要缓存的数据进行缓存,从所有可用于对需要缓存的数据进行缓存的独立缓存服务中选取出目标独立缓存服务时,可以将所有可用于对需要缓存的数据进行缓存的独立缓存服务中的部署位置与客户端最近的独立缓存服务作为目标独立缓存服务。也可以将所有可用于对需要缓存的数据进行缓存的独立缓存服务中的部署在业务方预先设置的备选机房中的独立缓存服务作为目标独立缓存服务。

在本申请中,当部署位置与客户端的位置的距离最近的独立缓存服务无法用于对需要缓存的数据进行缓存时,可以利用所有可用于对需要缓存的数据进行缓存的独立缓存服务中的与客户端的位置最近的独立缓存服务完成需要缓存的数据的写入和读取,从而,当部署位置与客户端的位置的距离最近的独立缓存服务无法用于对需要缓存的数据进行缓存时,依然可以快速地完成需要缓存的数据的写入和读取,向业务方提供高性能的缓存服务。

在本申请中,当部署位置与客户端的位置的距离最近的独立缓存服务无法用于对需要缓存的数据进行缓存时,也可以利用所有可用于对需要缓存的数据进行缓存的独立缓存服务中的部署在业务方预先设置的备选机房中的独立缓存服务对需要缓存的数据进行缓存或读取缓存数据。业务方预先设置的备选机房是在考虑了与客户端之间的距离、独立缓存服务运行在的服务器的负载等因素设置的,业务方预先设置的备选机房中的独立缓存服务可以确保以较快的速度完成需要缓存的数据的写入和读取。从而,当部署位置与客户端的位置的距离最近的独立缓存服务无法用于对需要缓存的数据进行缓存时,依然可以快速地完成需要缓存的数据的写入和读取,向业务方提供高性能的缓存服务。

步骤102,将需要缓存的数据发送至目标独立缓存服务。

在本申请中,在确定出目标独立缓存服务之后,可以由客户端将需要缓存的数据发送至目标独立缓存服务。然后,由目标独立缓存服务将需要缓存的数据进行缓存。目标独立缓存服务可以将需要缓存的数据存储在缓存存储空间,从而,对需要缓存的数据进行缓存。

步骤103,响应于需要缓存的数据被缓存,生成需要缓存的数据的特征标识。

在本申请中,在目标缓存数据服务将需要缓存的服务进行缓存之后,目标缓存服务可以向客户端发送指示需要缓存的数据缓存成功的指示信息,从而,客户端可以确定需要缓存的数据被缓存。同时,目标缓存服务可以向客户端发送需要缓存的数据的缓存地址。

在本申请中,可以由客户端响应于需要缓存的数据被缓存,生成需要缓存的数据的特征标识。每一个需要缓存的数据的特征标识是全局唯一的。

在本申请中,需要缓存的数据的特征标识可以包括但不限于:目标独立缓存服务的索引信息、需要缓存的数据的缓存位置。

在本申请中,生成的需要缓存的数据的特征标识可以称之为需要缓存的数据的key。

在本申请中,在需要缓存的数据被缓存之后,位于需要缓存的数据的缓存位置的需要缓存的数据可以称之为缓存数据。

相应的,在需要缓存的数据被缓存之后,需要缓存的数据的key也可称之为缓存数据的key。由于可以通过缓存数据的key查找到被缓存的数据,因此,缓存数据的key使得缓存数据有位置自我感知能力。

步骤104,将需要缓存的数据的特征标识提供给业务方。

在本申请中,在客户端响应于需要缓存的数据被缓存,生成需要缓存的数据的特征标识之后,可以由客户端将需要缓存的数据的特征标识发送至业务方的服务器,将需要缓存的数据的特征标识提供给业务方。从而,业务方可以利用需要缓存的数据的特征标识从需要缓存的数据的缓存位置获取该需要缓存的数据。

例如,当业务方需要获取缓存数据时,业务方的服务器已经预先存储了需要获取的缓存数据的特征标识即需要获取的缓存数据的key。该需要获取的缓存数据的key包括:该需要获取的缓存数据被缓存时所利用的独立缓存服务的索引信息、该需要获取的缓存数据的缓存位置。

业务方的服务器可以根据该需要获取的缓存数据的key,确定出该需要获取的缓存数据被缓存时所利用的独立缓存服务和该需要获取的缓存数据的缓存位置。然后,业务方的服务器可以向该独立缓存服务发送包含该缓存位置的缓存数据获取请求,由该独立缓存服务根据该缓存位置读取出该需要获取的缓存数据。最后,业务方的服务器可以接收该独立缓存服务发送的需要读取的数据。

在一些实施例中,当业务方需要获取缓存的数据时,业务方的服务器可以生成缓存数据获取请求,业务方可以将缓存数据获取请求发送至客户端。缓存数据获取请求包括:需要获取的缓存数据的特征标识即需要获取的缓存数据的key。客户端在接收到业务方的服务器发送的缓存数据获取请求之后,客户端可以基于需要获取的缓存数据的key,确定出该需要获取的缓存数据被缓存时所利用的独立缓存服务和该需要获取的缓存数据的缓存位置。然后,客户端可以向确定出的该独立缓存服务发送包含该缓存位置的缓存数据获取请求,使得该独立缓存服务可以从该缓存位置读取出需要获取的缓存数据。最后,客户端可以接收到该独立缓存服务发送的该需要获取的缓存数据,将该需要获取的缓存数据发送至业务方的服务器,从而,将该需要获取的缓存数据提供给业务方。

本申请提供的数据缓存方法,通过在多个机房分别部署独立缓存服务,每一个独立缓存服务均可以对需要缓存的数据进行缓存时以及读取缓存数据,避免了因为只有一个主缓存对数据进行缓存而造成的写操作单点问题。所有独立缓存服务均为独立部署,不存在缓存数据的同步问题。无论是写操作即对数据进行缓存的操作或读操作即读取缓存数据的操作,均可以利用与客户端的位置较近的缓存服务完成写操作或读操作,实现对需要缓存的数据的就近写入和就近读取,提升缓存服务的性能。

本申请提供的数据缓存方法尤其适用于一个流程中有多步操作并且多步操作之间需要前后共享数据的情况。

例如,passport业务中包括登录校验流程,包括登录校验流程包括识别有风险的密码登录、需要再进行短信/图文验证等安全校验等多步操作。业务方为passport业务,需要缓存的数据包括:密码登录成功的中间状态。对于海量用户并发登录的情况,需要对海量的密码登录成功的中间状态进行缓存。通过本申请提供的数据缓存方法,对海量的密码登录成功的中间状态进行缓存,可以提升缓存服务的性能,同时,避免了因为只有一个主缓存对数据进行缓存而造成的写操作单点问题和缓存数据的同步问题。

在本申请中,为便于对数据进行缓存和读取缓存数据,可以在客户端上部署提供给业务方使用的客户端api。业务方的服务器可以远程调用客户端api。客户端api中可以定义put方法、get方法。put方法的参数包含需要缓存的数据、有效期。get方法的参数包含缓存数据的特征标识即缓存数据的key。

当需要对需要缓存的数据进行缓存时,业务方的服务器可以远程调用客户端api中的put方法,put方法的需要缓存的数据、有效期等参数被包含在缓存请求中被发送至客户端。然后,在客户端上基于需要缓存的数据、有效期等参数执行put方法。通过执行put方法,可以使得客户端完成以下操作:确定目标缓存服务,将需要缓存的数据发送至目标缓存服务;接收目标缓存服务返回的需要缓存的数据的缓存位置;根据缓存位置和目标缓存服务的标识生成需要缓存的数据的key;将需要缓存的数据的key发送至业务方的服务器。

当需要对缓存数据进行获取时,业务方的服务器可以远程调用客户端api中的get方法,get方法的参数中的需要获取的缓存数据的key被包含在缓存请求中被发送至客户端。然后,在客户端上基于需要获取的缓存数据的key执行get方法。通过执行get方法,可以使得客户端完成以下操作:确定需要获取的缓存数据被缓存时利用的独立缓存服务和需要获取的缓存数据被缓存时的缓存地址;向确定出的独立缓存服务发送需要获取的缓存数据被缓存时的缓存地址,以使得该独立缓存服务从该缓存地址读取出需要获取的缓存数据;接收该独立缓存服务发送的需要获取的缓存数据;将需要获取的缓存数据发送至业务方的服务器。

请参考图2,其示出了本申请实施例提供的数据缓存装置的结构示意图。数据缓存装置中的各个单元或子单元执行的操作的具体实现方式可以上述参考方法实施例中描述的相应的操作的具体实现方式。

如图2所示,本实施例的提供的数据缓存装置安装于客户端上,数据缓存装置包括:响应单元201,发送单元202,生成单元203,提供单元204。其中,响应单元201被配置为响应于业务方的缓存请求,基于独立缓存服务的部署位置与客户端的位置的距离,从多个独立缓存服务中选取出目标独立缓存服务,所述缓存请求包括:需要缓存的数据;发送单元202被配置为将所述需要缓存的数据发送至所述目标独立缓存服务,以利用所述目标独立缓存服务对所述需要缓存的数据进行缓存;生成单元203被配置为响应于所述需要缓存的数据被缓存,生成所述需要缓存的数据的特征标识,所述需要缓存的数据的特征标识包括:需要缓存的数据的缓存位置;提供单元204被配置为将所述需要缓存的数据的特征标识提供给所述业务方,以使得所述业务方利用所述特征标识从所述需要缓存的数据的缓存位置获取所述需要缓存的数据。

在一些实施例中,响应单元201包括:独立缓存服务选取子单元,被配置为判断多个独立缓存服务中部署位置与客户端的位置的距离最近的独立缓存服务是否可以用于对所述需要缓存的数据进行缓存;若是,将部署位置与客户端的位置的距离最近的独立缓存服务作为目标独立缓存服务;若否,从所有可用于对需要缓存的数据进行缓存的独立缓存服务中选取出目标独立缓存服务。

在一些实施例中,独立缓存服务选取子单元进一步被配置为:当多个独立缓存服务中部署位置与客户端的位置的距离最近的独立缓存服务无法用于对所述需要缓存的数据进行缓存时,将所有可用于对需要缓存的数据进行缓存的独立缓存服务中的部署位置与所述客户端的位置的距离最近的独立缓存服务作为目标独立缓存服务,或者将所有可用于对需要缓存的数据进行缓存的独立缓存服务中的部署在业务方预先设置的备选机房中的独立缓存服务作为目标独立缓存服务。

在一些实施例中,数据缓存装置还包括:数据读取单元,被配置为接收所述业务方的服务器发送的缓存数据获取请求,所述缓存数据获取请求包括:需要获取的缓存数据的特征标识;基于所述特征标识,确定需要获取的缓存数据的缓存位置和需要获取的缓存数据被缓存时所利用的独立缓存服务;向所述独立缓存服务发送包含所述缓存位置的缓存数据读取请求,以使得所述独立缓存服务从所述缓存位置读取出所述需要获取的缓存数据;接收所述独立缓存服务发送的所述需要获取的缓存数据;将所述需要获取的缓存数据提供给所述业务方。

本申请还提供了一种客户端,该客户端可以配置有一个或多个处理器;存储器,用于存储一个或多个程序,一个或多个程序中可以包括用以执行上述实施例中描述的操作的指令。当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述实施例中描述的操作的指令。

本申请还提供了一种计算机可读介质,该计算机可读介质可以是客户端中所包括的;也可以是单独存在,未装配入客户端中。上述计算机可读介质承载有一个或者多个程序,当一个或者多个程序被客户端执行时,使得客户端执行上述实施例中描述的操作。

需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包括或存储程序的有形介质,该程序可以被消息执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多方面形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由消息执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包括的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包括一个或多个用于实现规定的逻辑功能的可执行消息。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机消息的组合来实现。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术实施例,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术实施例。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术实施例。

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