本申请涉及数据处理的智能检索技术领域,尤其涉及一种数据查询的方法及装置。
背景技术:
随着通信技术的发展,计算机中需要处理的数据的规模越来越大。例如,在数据查询系统中,为处理超大规模的数据查询流量,通常会在数据存储层和查询层之间增加一层缓存系统,缓存系统中会缓存当前符合某种分布规律的热点数据,同时采用数据淘汰算法动态淘汰数据,保证缓存系统中缓存数据量处于一个可控且稳定的状态。
现有技术中,缓存系统中可能存在的架构设计有以下两种:第一种,多机单副本。采用哈希算法对数据进行分片处理,机器实例间缓存的数据无重叠、所有机器实例构成完整的数据集,数据分片会相应引入元数据(meta)信息,上游业务访问时需要通过meta服务获取到meta信息,再根据meta信息访问数据分片机器获取数据。第二种,多机分片多副本,对数据进行分片处理后,每个分片的数据存在多个副本,数据查询时也需要meta服务支持。
但是,上述两种方式中,缓存系统的架构中需要强依赖meta服务,导致引入复杂的meta信息管理问题。
技术实现要素:
本申请实施例提供一种数据查询的方法及装置,以解决现有技术中缓存系统强依赖meta服务,导致引入复杂的meta信息的技术问题。
本申请实施例第一方面提供一种数据查询的方法,包括:
在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个所述数据分片的分片信息包括:所述数据分片的标签掩码和所述数据分片的掩码区间;获取查询关键字;计算所述查询关键字的目标掩码;根据所述目标掩码以及所述多个数据分片的掩码区间,在所述多个数据分片中确定目标数据分片;利用所述目标数据分片的标签掩码确定目标机器;其中,所述标签掩码与所述目标机器具有关联关系;向所述目标机器发送数据访问请求;接收所述目标机器响应于所述数据访问请求返回的查询结果。相较于现有技术的缓存系统中强依赖meta服务的数据查询方法,本申请实施例通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,不需要在缓存系统中引入复杂的meta信息管理,实现较为简单。
可选的,还包括:在所述缓存系统中扩分片时,对于新增分片,将所述新增分片挂载到所述多个数据分片中的其中一个第一数据分片,将所述第一数据分片的数据与所述新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致;重新确定所述第一数据分片的掩码区间,以及确定新增分片的标签掩码和新增分片的掩码区间;根据所述重新确定的第一数据分片的掩码区间、所述新增分片的标签掩码和所述新增分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
本申请实施例中,通过将新增分片挂载在多个数据分片中的其中一个第一数据分片,并将第一数据分片的数据与新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致,从而可以避免新增分片初始时无缓存数据或缓存数据较少造成的数据穿透。
可选的,还包括:在所述缓存系统中缩分片时,对于所述多个数据分片中执行缩分片的第二数据分片和第三数据分片,将所述第二数据分片的数据与所述第三数据分片的数据互相补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致;删除补充的第二数据分片或补充后的第三数据分片的任意一个,重新确定保留的数据分片的掩码区间;根据所述重新确定保留的数据分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
本申请实施例中,在将第二数据分片和第三数据分片缩为一个数据分片时,将第二数据分片和第三数据分片的数据相互补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致,再删除其中一个补充后的数据分片,以及更新系统中多个数据分片的分片信息,从而可以避免直接删除一个分片时,用户无法访问到该数据分片的数据造成的数据穿透。
可选的,还包括:利用一致性掩码哈希算法对待分片数据进行分片,得到所述多个数据分片。
可选的,所述利用一致性掩码哈希算法对待分片数据进行分片,包括:
将所述待分片数据的哈希值与m做模运算,将所述待分片数据划分为m份数据;其中,m为2的m次方,m为正整数,所述m份数据中的每份数据配置一个掩码;将所述m份数据分为多个数据分片;每个数据分片中的数据掩码的集合为所述数据分片的掩码区间;为每个所述数据分片配置一个标签掩码。
可选的,所述目标数据分片的标签掩码对应多个机器,所述目标数据分片的标签掩码对应的多个机器上存储的数据相同,所述利用所述目标数据分片的标签掩码确定目标机器,包括:根据负载均衡算法在所述目标数据分片的标签掩码对应的多个机器中确定一个目标机器。从而可以得到资源较为适配的目标机器
可选的,所述在公共服务系统中获取缓存系统中多个数据分片的分片信息,包括:在公共服务系统中定期获取缓存系统中多个数据分片的分片信息。这样可以得到实时准确的数据分片的分片信息。
可选的,所述公共服务系统包括:域名系统dns或块堆栈名系统bhs。
本申请实施例第二方面提供一种数据查询的装置,包括:
获取模块,用于在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个所述数据分片的分片信息包括:所述数据分片的标签掩码和所述数据分片的掩码区间;以及获取查询关键字;
处理模块,用于计算所述查询关键字的目标掩码;根据所述目标掩码以及所述多个数据分片的掩码区间,在所述多个数据分片中确定目标数据分片;以及利用所述目标数据分片的标签掩码确定目标机器;其中,所述标签掩码与所述目标机器具有关联关系;
发送模块,用于向所述目标机器发送数据访问请求;
接收模块,用于接收所述目标机器响应于所述数据访问请求返回的查询结果。
可选的,所述处理模块,还用于:
在所述缓存系统中扩分片时,对于新增分片,将所述新增分片挂载到所述多个数据分片中的其中一个第一数据分片,将所述第一数据分片的数据与所述新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致;
重新确定所述第一数据分片的掩码区间,以及确定新增分片的标签掩码和新增分片的掩码区间;
根据所述重新确定的第一数据分片的掩码区间、所述新增分片的标签掩码和所述新增分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
可选的,所述处理模块,还用于:
在所述缓存系统中缩分片时,对于所述多个数据分片中执行缩分片的第二数据分片和第三数据分片,将所述第二数据分片的数据与所述第三数据分片的数据互相补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致;
删除补充的第二数据分片或补充后的第三数据分片的任意一个,重新确定保留的数据分片的掩码区间;
根据所述重新确定保留的数据分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
可选的,所述处理模块,还用于:
利用一致性掩码哈希算法对待分片数据进行分片,得到所述多个数据分片。
可选的,所述处理模块,具体用于:
将所述待分片数据的哈希值与m做模运算,将所述待分片数据划分为m份数据;其中,m为2的m次方,m为正整数,所述m份数据中的每份数据配置一个掩码;
将所述m份数据分为多个数据分片;每个数据分片中的数据掩码的集合为所述数据分片的掩码区间;
为每个所述数据分片配置一个标签掩码。
可选的,所述目标数据分片的标签掩码对应多个机器,所述目标数据分片的标签掩码对应的多个机器上存储的数据相同,所述处理模块,具体还用于:
根据负载均衡算法在所述目标数据分片的标签掩码对应的多个机器中确定一个目标机器。
可选的,所述获取模块具体用于:
在公共服务系统中定期获取缓存系统中多个数据分片的分片信息。
可选的,所述公共服务系统包括:域名系统dns或块堆栈名系统bhs。
本申请实施例第三方面提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述第一方面任一项所述的方法。
本申请实施例第四方面提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如前述第一方面中任一项所述的方法。
综上所述,本申请实施例相对于现有技术的有益效果:
本申请实施例中提供了一种数据查询的方法及装置,通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,缓存系统中不需要meta服务,实现数据查询的方法较为简单。具体的,本申请实施例中,客户端可以在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个数据分片的分片信息包括:数据分片的标签掩码和数据分片的掩码区间;进而客户端获取查询关键字后;可以计算查询关键字的目标掩码;根据目标掩码以及多个数据分片的分片信息的掩码区间,在多个数据分片中确定目标数据分片,以及利用目标数据分片的标签掩码确定目标机器;向目标机器发送数据访问请求;接收目标机器响应于数据访问请求返回的查询结果,从而实现不依赖meta的数据查询,相较于现有技术的缓存系统中强依赖meta服务的数据查询方法,本申请实施例通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,不需要在缓存系统中引入复杂的meta信息管理,实现较为简单。
附图说明
图1为本申请实施例提供的数据查询的方法适用的系统架构示意图;
图2为本申请实施例提供的数据查询的方法的流程示意图;
图3为本申请实施例提供的数据分片示意图;
图4为本申请实施例提供的数据查询过程示意图;
图5为本申请实施例提供的扩分片示意图;
图6为本申请实施例提供的数据查询装置的结构示意图;
图7是用来实现本申请实施例的数据查询的方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本申请实施例的多类型数据源的处理方法可以应用于终端或服务器,终端可以包括:手机、平板电脑、笔记本电脑、或者台式电脑等电子设备。本申请实施例对应用的具体设备不作具体限定。
示例性的,终端或服务器中可以提供图形用户界面(graphicaluserinterface,gui),在图形用户界面中可以设置用于接收用户操作的控件、输入框等,使得用户可以在图形用户界面中输入查询关键字,进而实现本申请实施例的数据查询的方法,可以理解,图形用户界面的具体内容可以根据实际的应用场景确定,本发明实施例对此不作具体限定。
本申请实施例所描述的公共服务系统可以是域名系统(domainnamesystem,dns)或块堆栈名系统(blockstacknamingservice,bns)等,本申请实施例对此不作具体限定。该公共服务系统中可以设置缓存系统中的集群机器的信息(比如网络协议(internetprotocol,ip)地址或端口号的一种或多种等),同时设置有各机器的标签(tag)信息,每个机器的tag可以为该机器当前所属数据分片的标签掩码,使得在确定了数据所在的数据分片后,可以依据数据分片的标签掩码查询到缓存系统中对应的机器。
本申请实施例的缓存系统可以是多机多片多副本的系统架构。具体的,多机多片可以指,在数据量较多时,采用某种哈希算法(例如一致性哈希算法)对数据进行分片处理,采用多个机器分别无重叠的存储分片后的数据,所有机器内的数据分片构成完整的数据集,从而可以解决数据存储压力,具体应用中,在数据增多时可以扩分片,在数据减少时可以缩分片。多副本可以指对于任一数据分片,可以有多个副本机器,各副本机器中存储的内容一致,从而可以利用多个副本机器分别响应用户的请求,以解决请求压力。
如图1所示,图1为本申请实施例提供的方法所适用的应用场景架构示意图。
本申请实施例中,终端设备11可以从公共服务系统12中获取缓存系统中多个数据分片的分片信息,任一个数据分片的分片信息包括数据分片的标签掩码和所述数据分片的掩码区间。用户可以在终端设备11中输入查询关键字,则终端设备11获取该查询关键字,进而终端设备11可以计算查询关键字的目标掩码;并根据目标掩码以及多个数据分片的分片信息的掩码区间,在多个数据分片中确定目标数据分片,以及利用目标数据分片的标签掩码确定缓存系统13中的目标机器;终端设备11向目标机器发送数据访问请求;并接收目标机器响应于数据访问请求返回的查询结果,从而实现不依赖meta的数据查询,相较于现有技术的强依赖meta服务的数据查询方法,本申请实施例通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,不需要引入复杂的meta信息管理,实现较为简单。
可以理解,具体应用中,公共服务系统中的多个数据分片的分片信息可以是缓存系统控制的,因此,终端设备11可以定期从公共服务系统中获取缓存系统中多个数据分片的分片信息。
缓存系统13中机器的数量可以为大于或等于1的任意值,例如可以包括机器130至机器13n,n为大于或等于1的任意值。本申请实施例对此不作具体限定。
如图2所示,图2为本申请实施例提供的数据查询的方法的流程示意图。
该方法具体可以包括:
s101:在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个所述数据分片的分片信息包括:所述数据分片的标签掩码和所述数据分片的掩码区间。
本申请实施例中,公共服务系统中的多个数据分片的分片信息可以是缓存系统控制的,缓存系统中可以将需要缓存的数据分片设置在各机器和机器副本内,在缓存系统中进行数据分片时,对每个数据分片对应设置分片信息,分片信息具体可以是该数据分片的标签掩码和数据分片的掩码区间。
示例性的,如图3所示,可以将需要缓存的数据分为4个数据分片:分片1、分片2、分片3和分片4,每个数据分片的分片信息包括标签掩码和掩码区间。可选的,标签掩码可以是掩码区间的第一个掩码。例如,如图3所示的,分片1的掩码区间为【0,63】,标签掩码为0;分片2的掩码区间为【64,127】,标签掩码为64;分片3的掩码区间为【128,191】,标签掩码为128;分片4的掩码区间为【192,255】,标签掩码为192。
可选的,可以利用一致性掩码哈希算法对待分片数据进行分片,得到所述多个数据分片。
一致性掩码哈希算法也可以称为一致性哈希分片算法或哈希算法等。在一致性掩码哈希算法中对应有三个概念:分片、掩码(mask)、数据哈希值(hash)。每一个分片会在整个缓存系统中分配一个特定掩码(即掩码标签),需要缓存的数据可以使用常见的哈希算法计算出对应的哈希值,然后哈希值与掩码做特定的运算即可确定这条数据是否属于当前分片。
示例性的,所述利用一致性掩码哈希算法对待分片数据进行分片,包括:
将所述待分片数据的哈希值与m做模运算,将所述待分片数据划分为m份数据;其中,m为2的m次方,m为正整数,所述m份数据中的每份数据配置一个掩码;将所述m份数据分为多个数据分片;每个数据分片中的数据掩码的集合为所述数据分片的掩码区间;为每个所述数据分片配置一个标签掩码。
本申请实施例中,m为2的n次方,例如,m可以为64、128、256、502或1024等,可以根据实际的应用场景设定。
例如,以m为256为例,在对待分片数据进行分片时,采用的算法如下:
formaskinmasks:
if((hash%256)&mask)==mask:
returnmask
其中,masks为当前缓存系统中包含的所有掩码,按从大到小顺序排列。
具体的,先将待分片数据的哈希值与256做模运算,得到256份数据。
每份数据会分配一个掩码,所有的掩码组成缓存系统中的掩码信息集合,掩码集合可以按照从大到小排列。256份数据可以划分为4数据分片,每个数据分片分配一个标签掩码,每个数据分片中所对应的数据的掩码的集合构成该数据分片的掩码区间,具体可以参见如图3所示的分片示意图。
需要说明的是,采用上述算法的原因是:在按位与运算中存在如下隐藏定律,例如,令b为某些二进制位为1,其他位全为0的数,如0x1100,则存在如果a&b==b,则可判断a>=b。因为当a&b==b时,可判断a在特定二进制位的值与b相同,都为1,其他位可为0,也可为1;当都为0时为最小值,与b相等;当全为1时为最大值,大于b。如果a&b!=b,不能判断a<b。因为只能说明a与b在b的特定二进制位两者不相同,并不代表a在高位比b小,如0x10&0x1!=0x1,但0x10>0x1。因此在比较掩码时是从大到小进行比较,保证计算出来的上限和下限是正确的。
因此可推算上述算法中:假设shard=hash%256;若存在(shard&masks[i]!=masks[i])and(shard&masks[i 1]==masks[i 1]);则masks[i]>shard>=masks[i 1]。
即根据上面的算法即可确定数据在缓存系统中的数据区间,如masks为[0,128],shard值为190,则可确定当前数据所属的区间为[128,255]。如果将128作为某个数据分片的掩码,则这个数据分片缓存的数据掩码区间则为[128,255]。
s102:获取查询关键字。
本申请实施例中,查询关键字可以是用户输入的任意内容。示例性的,用户可以在输入框中输入查询关键字,或利用语音控件语音输入查询关键字等,则客户端可以获取查询关键字。
s103:计算所述查询关键字的目标掩码。
本申请实施例中,客户端可以采用哈希算法计算查询关键字在分片中的掩码,例如,查询关键字的哈希值为key=9192447271354903884,基于公式(hash%256)&mask)==mask,采用(key%256)&64==64,计算得到查询关键字的掩码为64。
s104:根据所述目标掩码以及所述多个数据分片的掩码区间,在所述多个数据分片中确定目标数据分片。
本申请实施例中,在计算得到查询关键字的目标掩码后,可以进一步判断该目标掩码属于哪个数据分片的掩码区间,进而将目标掩码所属的掩码区间对应的数据分片确定为目标数据分片。
s105:利用所述目标数据分片的标签掩码确定目标机器;其中,所述标签掩码与所述目标机器具有关联关系。
本申请实施例中,缓存系统的用于存储数据分片的机器的机器标签可以与该数据分片的标签掩码具有关联关系,例如,用于存储数据分片的机器的机器标签包含该数据分片的标签掩码。则可以根据缓存系统中机器标签与目标数据分片的标签掩码的关联关系,确定目标机器。
本申请实施例中,一个数据分片可以对应多个机器,多个机器中存储的数据一致,均为该数据分片中的全部数据,即一个数据分片可以对应多个机器副本。则所述利用所述目标数据分片的标签掩码确定目标机器,包括:根据负载均衡算法在所述目标数据分片的标签掩码对应的多个机器中确定一个目标机器。
示例性的,可以在目标数据分片的标签掩码对应的多个机器中将当前负载最轻或较轻的机器确定为目标设备,或者将满足负载需求的设备确定为目标设备等,从而可以得到资源较为适配的目标机器,本申请实施例对此不作具体限定。
s106:向所述目标机器发送数据访问请求。
s107:接收所述目标机器响应于所述数据访问请求返回的查询结果。
本申请实施例中,客户端可以向目标设备发送数据访问请求,该数据访问请求中可以包括查询关键字,则目标机器可以基于该数据访问请求确定查询结果,并将查询结果返回给客户端,进一步的,客户端中可以显示查询结果。
示例性的,如图4示出了一种数据查询过程的示意图。
如图4所示,示例性的,当前缓存系统中的集群机器可以有8个,4个数据分片,每两个机器对应一个数据分片。机器标识中可以包括ip、port以及机器当前所属数据分片的标签掩码。
客户端client可以通过dns或bns服务获取缓存系统的各数据分片的分片信息。在client端接收到包含查询关键字(key)的用户请求(request)时,会根据请求的key计算当前数据所在分片的掩码。如,key=9192447271354903884,(key%256)&64==64,则需要访问标签掩码为64的机器。client端可以发起远程过程调用(remoteprocedurecall,rpc)请求时,会从标签掩码为64的目标数据分片2中选取任一个机器作为目标机器,客户端可以向该向目标设备发送数据访问请求,由该目标机器返回查询结果。可以理解,由于数据分片的数量以及掩码区间是有缓存系统控制的,因此client可以定期从dns或bns中获取数据分片的分片信息。
综上所述,本申请实施例中提供了一种数据查询的方法及装置,通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,缓存系统中不需要meta服务,实现数据查询的方法较为简单。具体的,本申请实施例中,客户端可以在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个数据分片的分片信息包括:数据分片的标签掩码和数据分片的掩码区间;进而客户端获取查询关键字后;可以计算查询关键字的目标掩码;根据目标掩码以及多个数据分片的分片信息的掩码区间,在多个数据分片中确定目标数据分片,以及利用目标数据分片的标签掩码确定目标机器;向目标机器发送数据访问请求;接收目标机器响应于数据访问请求返回的查询结果,从而实现不依赖meta的数据查询,相较于现有技术的缓存系统中强依赖meta服务的数据查询方法,本申请实施例通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,不需要在缓存系统中引入复杂的meta信息管理,实现较为简单。
在具体应用时,会依据缓存系统中所存储的数据的变化进行扩分片或缩分片,例如多时可以扩分片,在数据减少时可以缩分片。
可选的,在所述缓存系统中扩分片时,对于新增分片,将所述新增分片挂载到所述多个数据分片中的其中一个第一数据分片,将所述第一数据分片的数据与所述新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致;重新确定所述第一数据分片的掩码区间,以及确定新增分片的标签掩码和新增分片的掩码区间;根据所述重新确定的第一数据分片的掩码区间、所述新增分片的标签掩码和所述新增分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
示例性的,图5示出了一种扩分片的示意图。
如图5所示,在初始状态下,系统共有4个数据分片:分片1、分片2、分片3和分片4,将数据划分为四个掩码区间:[0,63],[64,127],[128,191],[191,255],四个数据分片对应的标签掩码分别为:0,64,128,192。
示例性的,当扩分片时,对于新增分片5时,可以设置新分片5最终缓存的数据区为[32,63],五个数据分片对应的标签掩码分别为:0,32,64,128,192。
扩分片过程中,分片5最开始无任何缓存数据,如果直接挂载到缓存服务上会导致大规模的数据穿透,影响底层存储服务的稳定性。每个分片的数据会进行备份,备份数据可以存储到分布式文件系统(hadoopdistributedfilesystem,hdfs),分片5在启动时可以从分片1的备份数据中恢复缓存数据,将分片1的数据域分片5的数据相互补充,初始时分片5的标签掩码可以跟分片1保持一致,即把分片5的机器挂载到分片1上,接收线上流量做数据预充,使分片1与分片5的数据基本一致。当新分片数据预充完成后,即分片1和分片5的数据一致,可以修改缓存服务的掩码集合为(0,32,64,128,192)。此时分片1会只负责缓存[0,31]范围内的数据,[32,63]范围内的数据会根据淘汰策略自然淘汰;分片5会只负责缓存[32,63]范围内的数据,[0,31]范围内的数据也会被淘汰。
本申请实施例中,通过将新增分片挂载在多个数据分片中的其中一个第一数据分片,并将第一数据分片的数据与新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致,从而可以避免新增分片初始时无缓存数据或缓存数据较少造成的数据穿透。
可选的,在所述缓存系统中缩分片时,对于所述多个数据分片中执行缩分片的第二数据分片和第三数据分片,将所述第二数据分片的数据与所述第三数据分片的数据互相补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致;删除补充的第二数据分片或补充后的第三数据分片的任意一个,重新确定保留的数据分片的掩码区间;根据所述重新确定保留的数据分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
本申请实施例中,在将第二数据分片和第三数据分片缩为一个数据分片时,将第二数据分片和第三数据分片的数据相互补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致,再删除其中一个补充后的数据分片,以及更新系统中多个数据分片的分片信息,从而可以避免直接删除一个分片时,用户无法访问到该数据分片的数据造成的数据穿透。
综上所述,在扩分片或缩分片时,由于上述的挂载和数据互相补充过程,使得之前数据可在分片1上获取,则扩完分片或缩完分片后依然可以在分片1上查询到(即分片1不被缩容),因此不会出现数据的哈希结果抖动的情况。
图6为本申请提供的数据查询的装置一实施例的结构示意图。如图6所示,本实施例提供的数据查询的装置包括:
获取模块31,用于在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个所述数据分片的分片信息包括:所述数据分片的标签掩码和所述数据分片的掩码区间;以及获取查询关键字;
处理模块32,用于计算所述查询关键字的目标掩码;根据所述目标掩码以及所述多个数据分片的掩码区间,在所述多个数据分片中确定目标数据分片;以及利用所述目标数据分片的标签掩码确定目标机器;其中,所述标签掩码与所述目标机器具有关联关系;
发送模块33,用于向所述目标机器发送数据访问请求;
接收模块34,用于接收所述目标机器响应于所述数据访问请求返回的查询结果。
可选的,所述处理模块,还用于:
在所述缓存系统中扩分片时,对于新增分片,将所述新增分片挂载到所述多个数据分片中的其中一个第一数据分片,将所述第一数据分片的数据与所述新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致;
重新确定所述第一数据分片的掩码区间,以及确定新增分片的标签掩码和新增分片的掩码区间;
根据所述重新确定的第一数据分片的掩码区间、所述新增分片的标签掩码和所述新增分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
可选的,所述处理模块,还用于:
在所述缓存系统中缩分片时,对于所述多个数据分片中执行缩分片的第二数据分片和第三数据分片,将所述第二数据分片的数据与所述第三数据分片的数据互相补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致;
删除补充的第二数据分片或补充后的第三数据分片的任意一个,重新确定保留的数据分片的掩码区间;
根据所述重新确定保留的数据分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
可选的,所述处理模块,还用于:
利用一致性掩码哈希算法对待分片数据进行分片,得到所述多个数据分片。
可选的,所述处理模块,具体用于:
将所述待分片数据的哈希值与m做模运算,将所述待分片数据划分为m份数据;其中,m为2的m次方,m为正整数,所述m份数据中的每份数据配置一个掩码;
将所述m份数据分为多个数据分片;每个数据分片中的数据掩码的集合为所述数据分片的掩码区间;
为每个所述数据分片配置一个标签掩码。
可选的,所述目标数据分片的标签掩码对应多个机器,所述目标数据分片的标签掩码对应的多个机器上存储的数据相同,所述处理模块,具体还用于:
根据负载均衡算法在所述目标数据分片的标签掩码对应的多个机器中确定一个目标机器。
可选的,所述获取模块具体用于:
在公共服务系统中定期获取缓存系统中多个数据分片的分片信息。
可选的,所述公共服务系统包括:域名系统dns或块堆栈名系统bhs。
本申请各实施例提供的数据查询的装置可用于执行如前述各对应的实施例所示的方法,其实现方式与原理相同,不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图7所示,是根据本申请实施例的数据查询的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图7所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器601为例。
存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据查询的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据查询的方法。
存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据查询的方法对应的程序指令/模块(例如,附图6所示的获取模块31、处理模块32、发送模块33和接收模块34)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据查询的方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据查询的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至数据查询的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
数据查询的方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图7中以通过总线连接为例。
输入装置603可接收输入的数字或字符信息,以及产生与数据查询的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,客户端可以在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个数据分片的分片信息包括:数据分片的标签掩码和数据分片的掩码区间;进而客户端获取查询关键字后;可以计算查询关键字的目标掩码;根据目标掩码以及多个数据分片的分片信息的掩码区间,在多个数据分片中确定目标数据分片,以及利用目标数据分片的标签掩码确定目标机器;向目标机器发送数据访问请求;接收目标机器响应于数据访问请求返回的查询结果,从而实现不依赖meta的数据查询,相较于现有技术的缓存系统中强依赖meta服务的数据查询方法,本申请实施例通过公共服务系统中的数据分片的分片信息,就可以处理用户的数据查询需求,不需要在缓存系统中引入复杂的meta信息管理,实现较为简单。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
1.一种数据查询的方法,其特征在于,所述方法包括:
在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个所述数据分片的分片信息包括:所述数据分片的标签掩码和所述数据分片的掩码区间;
获取查询关键字;
计算所述查询关键字的目标掩码;
根据所述目标掩码以及所述多个数据分片的掩码区间,在所述多个数据分片中确定目标数据分片;
利用所述目标数据分片的标签掩码确定目标机器;其中,所述标签掩码与所述目标机器具有关联关系;
向所述目标机器发送数据访问请求;
接收所述目标机器响应于所述数据访问请求返回的查询结果。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述缓存系统中扩分片时,对于新增分片,将所述新增分片挂载到所述多个数据分片中的其中一个第一数据分片,将所述第一数据分片的数据与所述新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致;
重新确定所述第一数据分片的掩码区间,以及确定新增分片的标签掩码和新增分片的掩码区间;
根据所述重新确定的第一数据分片的掩码区间、所述新增分片的标签掩码和所述新增分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
3.根据权利要求1所述的方法,其特征在于,还包括:
在所述缓存系统中缩分片时,对于所述多个数据分片中执行缩分片的第二数据分片和第三数据分片,将所述第二数据分片的数据与所述第三数据分片的数据互相补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致;
删除补充的第二数据分片或补充后的第三数据分片的任意一个,重新确定保留的数据分片的掩码区间;
根据所述重新确定保留的数据分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
利用一致性掩码哈希算法对待分片数据进行分片,得到所述多个数据分片。
5.根据权利要求4所述的方法,其特征在于,所述利用一致性掩码哈希算法对待分片数据进行分片,包括:
将所述待分片数据的哈希值与m做模运算,将所述待分片数据划分为m份数据;其中,m为2的m次方,m为正整数,所述m份数据中的每份数据配置一个掩码;
将所述m份数据分为多个数据分片;每个数据分片中的数据掩码的集合为所述数据分片的掩码区间;
为每个所述数据分片配置一个标签掩码。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述目标数据分片的标签掩码对应多个机器,所述目标数据分片的标签掩码对应的多个机器上存储的数据相同,所述利用所述目标数据分片的标签掩码确定目标机器,包括:
根据负载均衡算法在所述目标数据分片的标签掩码对应的多个机器中确定一个目标机器。
7.根据权利要求1所述的方法,其特征在于,所述在公共服务系统中获取缓存系统中多个数据分片的分片信息,包括:
在公共服务系统中定期获取缓存系统中多个数据分片的分片信息。
8.根据权利要求1或7任一项所述的方法,其特征在于,所述公共服务系统包括:域名系统dns或块堆栈名系统bhs。
9.一种数据查询的装置,其特征在于,包括:
获取模块,用于在公共服务系统中获取缓存系统中多个数据分片的分片信息,任一个所述数据分片的分片信息包括:所述数据分片的标签掩码和所述数据分片的掩码区间;以及获取查询关键字;
处理模块,用于计算所述查询关键字的目标掩码;根据所述目标掩码以及所述多个数据分片的掩码区间,在所述多个数据分片中确定目标数据分片;以及利用所述目标数据分片的标签掩码确定目标机器;其中,所述标签掩码与所述目标机器具有关联关系;
发送模块,用于向所述目标机器发送数据访问请求;
接收模块,用于接收所述目标机器响应于所述数据访问请求返回的查询结果。
10.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于:
在所述缓存系统中扩分片时,对于新增分片,将所述新增分片挂载到所述多个数据分片中的其中一个第一数据分片,将所述第一数据分片的数据与所述新增分片的数据互相补充,直到补充的第一数据分片的数据与补充后的新增分片的数据一致;
重新确定所述第一数据分片的掩码区间,以及确定新增分片的标签掩码和新增分片的掩码区间;
根据所述重新确定的第一数据分片的掩码区间、所述新增分片的标签掩码和所述新增分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
11.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于:
在所述缓存系统中缩分片时,对于所述多个数据分片中执行缩分片的第二数据分片和第三数据分片,将所述第二数据分片的数据与所述第三数据分片的数据互相补充,直到补充的第二数据分片的数据与补充后的第三数据分片的数据一致;
删除补充的第二数据分片或补充后的第三数据分片的任意一个,重新确定保留的数据分片的掩码区间;
根据所述重新确定保留的数据分片的掩码区间,更新所述缓存系统中多个数据分片的分片信息。
12.根据权利要求9-11任一项所述的装置,其特征在于,所述处理模块,还用于:
利用一致性掩码哈希算法对待分片数据进行分片,得到所述多个数据分片。
13.根据权利要求12所述的装置,其特征在于,所述处理模块,具体用于:
将所述待分片数据的哈希值与m做模运算,将所述待分片数据划分为m份数据;其中,m为2的m次方,m为正整数,所述m份数据中的每份数据配置一个掩码;
将所述m份数据分为多个数据分片;每个数据分片中的数据掩码的集合为所述数据分片的掩码区间;
为每个所述数据分片配置一个标签掩码。
14.根据权利要求9-11任一项所述的装置,其特征在于,所述目标数据分片的标签掩码对应多个机器,所述目标数据分片的标签掩码对应的多个机器上存储的数据相同,所述处理模块,具体还用于:
根据负载均衡算法在所述目标数据分片的标签掩码对应的多个机器中确定一个目标机器。
15.根据权利要求9所述的装置,其特征在于,所述获取模块具体用于:
在公共服务系统中定期获取缓存系统中多个数据分片的分片信息。
16.根据权利要求9或15任一项所述的装置,其特征在于,所述公共服务系统包括:域名系统dns或块堆栈名系统bhs。
17.一种电子设备,其特征在于,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8任一项所述的方法的指令。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,计算机指令用于使所述计算机执行如权利要求1-8任一项所述的方法。
技术总结