掌桥专利:专业的专利平台
掌桥专利
首页

一种数据存储方法、数据读取方法及装置

文献发布时间:2024-04-18 19:53:33


一种数据存储方法、数据读取方法及装置

技术领域

本公开涉及计算机技术领域,尤其涉及一种数据存储方法、数据读取方法及装置。

背景技术

目前,伴随着互联网的高速发展,数据量飞速增长,导致服务器缓存组件压力过大,网络开销增大,进而造成缓存接口不足,甚至造成服务雪崩,无法正常的为用户提供服务。

相关技术中,选择两种解决方案,一种是对于硬件方面的提升,通过增加缓存组件或者网络带宽提升缓存能力;另一种是对系统方面的提升,通过对已上线的系统进行大幅度的重构,从业务上将数据量过大的业务进行拆分。

发明内容

根据本公开的一方面,提供了一种数据存储方法,所述方法包括:

基于数据量分片阈值对原始数据进行分片,获得所述原始数据的多个分片数据,所述数据量分片阈值小于预设数据容量;

基于多个分片数据的标识和多个所述分片数据的组合关系,确定有序性标识;

将所述有序性标识和多个所述分片数据存储在不同的机器中。

根据本公开的另一方面,提供了数据读取方法,所述方法包括:

响应于数据取出请求,基于数据取出请求从分布式存储机器获取与所述数据取出请求匹配的有序性标识,所述有序性标识用于指示不同分片数据的组合关系,所述有序性标识和不同所述分片数据存储在不同的机器中,每个所述分片数据的数据量小于预设数据容量;

基于所述有序性标识将不同所述机器中存储的所述分片数据进行组合,获得数据读取结果。

根据本公开的另一方面,提供了数据存储装置,所述装置包括:

分片模块,用于基于数据量分片阈值对原始数据进行分片,获得所述原始数据的多个分片数据,所述数据量分片阈值小于预设数据容量;

确定模块,用于基于多个分片数据的标识和多个所述分片数据的组合关系,确定有序性标识;

存储模块,用于将所述有序性标识和多个所述分片数据存储在不同的机器中。

根据本公开的另一方面,提供了一种数据读取装置,所述装置包括:

响应模块,用于响应于数据取出请求,基于数据取出请求从分布式存储机器获取与所述数据取出请求匹配的有序性标识,所述有序性标识用于指示不同分片数据的组合关系,所述有序性标识和不同所述分片数据存储在不同的机器中,每个所述分片数据的数据量小于预设数据容量;

获取模块,用于基于所述有序性标识将不同所述机器中存储的所述分片数据进行组合,获得数据读取结果。

根据本公开的另一方面,提供了一种电子设备,包括:

处理器;以及,

存储程序的存储器;

其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据本公开示例性实施例所述的方法。

根据本公开的另一方面,提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机

可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行根据本公开示例性实施例所述的方法。

本公开示例性实施例中提供的一个或多个技术方案,可以基于数据量分片阈值对原始数据进行分片,从而获得原始数据的多个分片数据,且每个数据量分片阈值小于预设数据容量。基于此,当进行数据存储时,对于大于预设数据容量的原始数据来说,可以从数据量的尺度对原始数据进行切分,从而获得多个分片数据,因此,随着业务量的增加,分片数据的数据量不会发生变化。此时,将多个分片数据存储在不同的机器时,降低了机器缓存不足和网络堵塞的情况,从而提高数据存储效率。而且,不需要增加高性能的硬件设备以及不需要人工干预,从而减少成本。

同时,本公开示例性实施例还可以基于多个分片数据的存储地址和多个分片数据的组合关系,确定原始数据的有序性标识,将有序性标识存储在不同的机器中。在此基础上,可以响应于数据取出请求,基于数据取出请求从分布式存储机器获取与数据取出请求匹配的有序性标识,基于有序性标识将不同机器中存储的分片数据进行组合,获得最终数据读取结果。可见,本公开示例性实施例在存储多个分片数据时,并不需要对上线系统进行重构,仅对数据进行了进行处理,从而降低了上线风险,减少线上故障所带来的业务损失。

附图说明

此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:

图1示出了根据本公开示例性实施例的数据存储方法的基本流程图;

图2示出了示出了根据本公开示例性实施例的数据分片方法的流程图;

图3示出了示出了根据本公开示例性实施例的自描述结构体的示意图;

图4示出了根据本公开示例性实施例的数据读取方法的基本流程图;

图5示出了根据本公开示例性实施例的数据存储装置的功能模块示意性框图;

图6示出了根据本公开示例性实施例的数据读取装置的功能模块示意性框图;

图7示出了根据本公开示例性实施例的芯片的示意性框图;

图8示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。

本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。

需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。

本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。

在介绍本公开实施例之前首先对本公开实施例中涉及到的相关名词作如下释义:

远程字典服务(Remote Dictionary Server,缩写为Redis):Redis是一个高性能的key-value数据库,其中,key被形象的称之为密钥,Redis提供了诸多操作这把“密钥”的命令,从而实现了对存储数据的管理,而key可以看成value的变量,通过检索key就可以找到对应的value值。Redis的出现,很大程度补偿了分布式的高速缓存系统这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

Bigkey,Redis中Bigkey指的是Redis中key对应的value值很大。操作Bigkey通常比较耗时,也就意味着阻塞Redis可能性越大。所以,就需要把Bigkey提早检查出来,避免影响线上生产。Redis客户端自带有查询Bigkey功能,会在线遍历服务器中全部key,遍历期间很消耗服务器资源,给生产环境造成性能影响,且客户端自带的Bigkey检索每次只会检查出各种类型的最大key,无法查看更多Bigkey,不能满足生产环境Bigkey检查需求。高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。

缓存技术,一般是指,用一个更快的存储设备存储一些经常用到的数据,供用户快速访问,用户不需要每次都与存储较慢的设备去做交互,因此可以提高访问效率。

分布式缓存,缓存这种能够提升指令和数据读取速度的特性,随着本地计算机系统向分布式系统的扩展,在分布式计算领域中得到了广泛的应用,称为分布式缓存。就是指在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,并尽量存储到更快的设备,以减少远程数据传输的延迟,让用户和应用可以很快访问到想要的数据。

网络开销,在网络传输过程中,由于对信号的传输,需要变换数据格式,难免要加入一些冗余的数据,这些冗余数据又是传输所必须的,而这些冗余数据在源数据中占有的比例叫做开销。

雪崩效应,在微服务之间进行服务调用是由于某一个服务故障,导致级联服务故障的现象,称为雪崩效应。雪崩效应描述的是提供方不可用,导致消费方不可用并将不可用逐渐放大的过程。

单点故障,通常分布式系统采用主从模式,一个主机连接多个处理节点,主节点负责分发任务,而子节点负责处理业务,当主节点发生故障时,会导致整个系统发故障,我们把这种故障叫做单点故障。

生命周期,数据的生命周期是指某个集合的数据从产生或获取到销毁的过程。

近年来,在互联网高性能、高并发服务端的场景下,单个业务体量快速增长,因此,服务端所承载的数据量也飞速增长,每个存储空间所需要缓存的数据量也飞速增长,数据量的增长使得缓存组件压力增大,网络开销增大,进而导致接口服务能力急剧下降,造成服务雪崩效应,无法正常的提供服务。

相关技术中,从硬件或者系统的角度出发,已解决数据缓存过大的问题。但是,当从硬件角度出发时,通过提升硬件机器性能,或者增加缓存组件,用以增加网络带宽,针对于对硬件的提升中,高性能的硬件成本过高,网络带宽有限,并且容易造成单点故障;当从系统角度出发时,通过对现有的系统进行大幅度的重构修改,使得修改后的系统可以承担更大数据量的处理能力,但是,当对系统进行大幅度修改时,非常容易引入上线风险,系统容易产生故障,从而造成业务损失。

针对上述问题,本公开示例性实施例提供一种数据存储方法、数据读取方法,可以将过大的存储数据进行分片处理,并对多个分片数据进行有序性标识,并将多个分片数据存储在不同的机器中,以此增加数据缓存能力,在此基础上,响应于数据取出请求,按照多个分片数据对应的有序性标识对多个分片数据进行组合,从而快速,便捷的进行数据存储与读取,并且,硬件可以进行复用不增加额外的硬件成本,可以无故障的兼容原缓存,不需要人更进行干预。

图1示出了根据本公开示例性实施例的数据存储方法的基本流程图。如图1所示,本公开示例性实施例的数据存储方法可以包括:

步骤101:基于数据量分片阈值对原始数据进行分片,获得原始数据的多个分片数据,并且每个数据量分片阈值小于预设数据容量。

本公开示例性实施例在存储缓存数据时,首先判断所要存储的原始数据的数据量是否大于或等于预设数据容量,当原始数据的数据量超过预设数据容量时标记为可分片数据,也可以称作大key数据;当原始数据的数据量未超过数据量分片阈值时标记为不可拆分数据,也可以称作小key数据。

示例性的,可以预设数据容量为10KB,当所需要存储的原始数据的数据量大于10KB时,将该原始数据标记为可分片数据,当所需要存储的原始数据的数据量小于10KB时,将该原始数据标记为不可拆分数据。

举例来说,假设某一需要存储的原始数据的数据量为48KB时,其数据量大于预设数据容量,可以标记该原始数据为可分片数据。此时,当数据量分片阈值为8KB时,由于48KB÷8KB=6个,该原始数据恰好能够切分为6个8KB的分片数据;当数据量分片阈值为7KB时,由于48KB÷7KB≈6.86,不能恰好切分。即从原始数据拆分出6个分片数据时,原始数据还余下不到1.0KB的数据,因此,可以将剩余的原始数据作为一个新的分片数据,从而获得7个分片数据。由此可见,当基于原始数据和数据量分片阈值确定的分片数量计算值为小数时,可以对该小数进行向上取整,从而获得实际的分片数量。

在实际应用中,当原始数据的数据量增大时,所对应的分片数据的数量有可能也会随之增大,例如,假设数据量分片阈值为8KB时,当原始数据A的数据量为48KB时,可以拆分为6个分片数据,当原始数据B的数据量为56KB时,可以拆分为7分片数据,即原始数据的数据量与分片数据的数量正相关,并且每个分片数据的数据量均小于或等于数据量分片阈值。

可见,本公开示例性实施例可以将原始数据切分为多个分片数据,不仅可以有效地缓解海量数据的存储问题,缩短存储时间,而且随着数据量的不断增大,每个分片数据还可以成长为新的原始数据,从而,可以进一步的进行切分,进而,可以快速的对海量数据进行处理。

步骤102:基于多个分片数据的标识和多个分片数据的组合关系,确定原始数据的有序性标识。其中,有序性标识包括按照分片数据的组合关系排序的多个分片数据标识。

示例性的,将原始数据拆分为多个分片数据后,多个分片数据之间存在相应的组合关系,其中,将原始数据进行拆分获得的多个分片数据按照一定顺序进行有序组合,可以组合成为一个完整的原始数据。基于此,可以对多个分片数据进行标识,按照多个分片数据之间的组合关系对多个分片数据的标识进行组合,即可获得一个完整的原始数据。此处对多个分片数据的标识进行组合,可以是对多个分片数据的标识进行排序,或者对多个分片数据的标识进行有序性标记。

图2示出了示出了根据本公开示例性实施例的数据分片方法的流程图。如图2所示,可以将原始数据301按照数据量大小进行切分并对多个分片进行有序性标识,将原始数据301切分为A、B、C、D和E共5个分片数据,其中A、B、C、D、E分别为5个分片数据的标识。

当原始数据的五个分片数据的标识按照A、B、C、D、E的顺序分布时,可以组合为完整的原始数据。因此,有序性标识可以为{A,B,C,D,E},当原始数据的五个分片数据的标识按照B、C、A、D、E的顺序分布时,有序性标识可以为{B,C,A,D,E},可见,可以基于有序性标识将五个分片数据进行组合,获得完整的原始数据。

步骤103:将有序性标识和多个分片数据存储在不同的机器中,每个分片数据都有相应的机器对其数据进行处理。

本公开示例性实施例的机器可以是虚拟的缓存机器,也可以是实际机器。其中,不同数据可以存储在同一实际机器的不同缓存机器中,也可以存储在不同的实际机器中。若缓存机器设定生命周期,如果其中未存储数据,可以在机器缓存达到生命周期终点时,自动被回收或者销毁。例如,可以设置24小时为一个机器缓存的生命周期,即当一个缓存在某一个机器中存在超过24小时,可以自动进行销毁,以此实现硬件的复用,从而节约成本。

本公开示例性实施例可以分别为原始数据以及分片数据建立自描述结构体,基于有序性标识和原始数据的标识确定原始数据的自描述结构体;也可以基于每个分片数据确定分片数据的自描述结构体。例如:可以将分片数据进行压缩,然后将压缩后的分片数据存储于分片数据的自描述结构体中的数据域中,并附加相关信息,此处对于分片数据的压缩算法可以采用压缩数据流的算法、无损压缩算法或者压缩库等方式。其中,自描述结构可以称为半结构化数据或无模式数据,指一种包含标记或者标记元素的结构化数据形式,这种形式中的标记或者标记元素旨在分离语义元素,为给定的数据生成记录和字段层次结构。而自描述结构体则是由一批自描述结构组合成的结构型数据。

图3示出了示出了根据本公开示例性实施例的自描述结构体的示意图。如图3所示,对于可拆分的原始数据所对应的自描述结构体可以包括原始数据的键信息key,原始数据的值信息value,有序性标识groupKeyList,版本信息Version,模式信息mode,原始数据标识isBigKey等信息;原始数据的值信息value中没有存储数据,原始数据标识isBigKey表示该原始数据标识所标记的原始数据为大key数据。

对于分片数据的自描述结构体可以包括分片数据的键信息key,分片数据的值信息value,有序性标识groupKeyList,版本信息Version,模式信息mode等信息。有序性标识groupKeyList为空,分片数据的值信息value实际存储有压缩后的分片数据,不同分片数据的键信息key可以不同。

例如:分片数据的数量为五个,五个分片数据的标识按照第一分片数据、第二分片数据、第三分片数据、第四分片数据和第五分片数据的顺序排序,其对应的分片数据的键信息分别为key1、key2、key3、key4和key5,那么五个分片数据在所属的原始数据的自描述体结构中的有序性标识groupKeyList可以为{key1,key2,key3,key4,key5}。

当数据分片结束后,需要对多个数据进行存储,可以将原始数据的自描述结构体存储于第一机器的存储空间,将多个分片数据的自描述结构体存储于第二机器的存储空间。多个分片数据的自描述结构体可以采用并行或串行方式存储在不同第二机器的存储空间中。

在实际应用中,可以在机器集群中定位存储原始数据的自描述结构体的第一机器和存储不同分片数据的自描述结构体的第二机器,例如:可以采用一致性hash算法定位原始数据的自描述结构体和不同分片数据的自描述体所存储机器。

在一种可选方式中,本公开示例性实施例还可以包括:响应于第一存储空间存储原始数据的自描述结构体失败,提示原始数据的自描述结构体存储失败。此时,第一机器中虽然已经为原始数据的自描述结构体开辟了第一存储空间,但是该第一存储空间并未存储原始数据的自描述结构体,因此,第一存储空间可以被用于存储其它数据,这些数据可以各种可能的自描述结构体,达到对第一存储空间进行二次利用,同时,为了避免数据干扰,可以对已将创建,但是没有存储缓存的第一存储空间设置生命周期,如果当第一存储空间达到生命周期终点时,第一机器可以自动销毁该缓存。

示例性的,公开示例实施例在进行原始数据自描述结构体存储时,可以判断第一机器中是否存在第一机器的第一存储空间,以确定是否有可能被二次利用的存储空间。

若第一机器中存在已创建的第一存储空间,说明第一机器中有可能存在被二次利用的存储空间,此时,可以判断原始数据的自描述结构体的数据量是否与第一存储空间的容量匹配。

当原始数据的自描述结构体的数据量与第一机器的第一存储空间的容量匹配时,说明第一机器的第一存储空间的容量满足原始数据的自描述结构体的存储要求,可以直接将原始数据的自描述结构体存储于第一机器的第一存储空间中,从而达到二次利用第一机器的第一存储空间的目的;当原始数据的自描述结构体的数据量与第一机器的第一存储空间的容量不匹配时,说明第一机器的第一存储空间的容量无法满足原始数据的自描述结构体的存储要求,可以在第一机器中创建与原始数据的自描述结构体的数据量匹配的第一机器的第二存储空间,进而将原始数据的自描述结构体存储于该第一机器的第二存储空间中。

若第一机器中不存在已创建的第一机器的第一存储空间时,说明第一机器中不存在有可能被二次利用的存储空间,则需要在第一机器中创建与原始数据的自描述结构体的数据量匹配的第一机器的第二存储空间,进而将原始数据的自描述结构体存储于该第一机器的第二存储空间中。

当在第一机器中创建第二存储空间时,可以基于原始数据的自描述体结构在第一机器建立第二存储空间,然后将原始数据的自描述体结构存储在第一机器的第二存储空间中。

在一种可选方式中,本公开示例性实施例还可以包括:响应于第二存储空间存储分片数据的自描述结构体失败,提示分片数据的自描述结构体存储失败。此时,第二机器中虽然已经为分片数据的自描述结构体开辟了第二存储空间,但是该第二存储空间并未存储分片数据的自描述结构体,因此,第二存储空间可以被用于存储其它数据,这些数据可以各种可能的自描述结构体,达到对第二存储空间进行二次利用,同时,为了避免数据干扰,可以对已将创建,但是没有存储缓存的第二存储空间设置生命周期,如果当第二存储空间达到生命周期终点时,第二机器可以自动销毁该缓存。应理解,自描述结构体存储失败可能是由于存储失败可能是由于网络通信故障,网络抖动等问题造成的存储失败。

示例性的,公开示例实施例在进行分片数据自描述结构体存储时,可以判断第二机器中是否存在第二机器的第一存储空间,以确定是否有可能被二次利用的存储空间。

若第二机器中存在已创建的第二机器的第一存储空间,说明第二机器中有可能存在被二次利用的存储空间,此时,可以判断分片数据的自描述结构体的数据量是否与第二机器的第一存储空间的容量匹配。

当分片数据的自描述结构体的数据量与第二机器的第一存储空间的容量匹配时,说明第二存储空间的容量满足分片数据的自描述结构体的存储要求,可以直接将分片数据的自描述结构体存储于第二机器的第一存储空间中,从而达到二次利用第二存储空间的目的;当分片数据的自描述结构体的数据量与第二机器的第一存储空间容量不匹配时,说明第二机器的第一存储空间容量无法满足分片数据的自描述结构体的存储要求,可以在第二机器中创建与分片数据的自描述结构体的数据量匹配的第二机器的第二存储空间,进而将分片数据的自描述结构体存储于该第二机器的第二存储空间中。

若第二机器中不存在已创建的第二机器的第一存储空间时,说明第二机器中不存在有可能被二次利用的存储空间,则需要在第二机器中创建与分片数据的自描述结构体的数据量匹配的第二机器的第二存储空间,进而将分片数据的自描述结构体存储于该第二机器的第二存储空间中。

当在第二机器中创建第二机器的第二存储空间时,可以基于分片数据的自描述体结构在第二机器建立第二存储空间,然后将分片数据的自描述体结构存储在第二机器的第二存储空间中。

本公开示例性实施例还可以自适应的选择是否对原始数据进行分片,若不对该原始数据进行分片则直接进行存储即可,若需要对该原始数据进行分片,则执行本公开实施例的数据存储方法对该原始数据进行分片进而进行存储,并且,该拆分不受业务变化的影响,随着后期业务量的增大,即数据量的增大时,分片数据还可以自适应的成长为新的原始数据,无需人工介入。

可见,将分片数据存储于不同的机器中,可以将一个大的原始数据拆分为多个分片数据,进而,将不同的分片数据存储于不同的机器中,从而,可以更加快速的进行存储,并且,所用到的存储机器都可二次利用,极大地降低了成本。

图4示出了根据本公开示例性实施例的数据读取方法的基本流程图。如图4所示,本公开示例性实施例的数据读取方法可以包括:

步骤401:响应于数据取出请求,基于数据取出请求从分布式存储机器获取与数据取出请求匹配的有序性标识,有序性标识用于指示不同分片数据的组合关系和不同分片数据存储在不同的机器中,每个分片数据的数据量小于预设数据容量。

示例性的,本公开示例性实施例在进行数据读取时,可解析数据取出请求,从而获得到查询关键词,如果查询关键词的数量有多个,还可以从数据取出请求解析出不同查询关键词之间逻辑关系。在此基础上,基于查询关键词或者查询关键词和逻辑关系确定待查询键信息,然后从大量的原始数据的自描述体结构中原始数据的键信息key,从而确定与待查询键信息匹配的目标键信息key。应理解,当待查询键信息对应的数据被存储在本地缓存时,如可以直接从本地缓存取出数据,不需要通过外部机器进行读取。

本公开示例性实施例的目标键信息key所在的原始数据的自描述体结构实际为所需取出的数据的自描述体结构。如果该自描述体结构所包含有的原始数据标识为原始数据标识isBigKey,说明该数据为大key数据,该自描述体结构所包含有原始数据的值信息value为空,其中所包含的有序性标识groupKeyList与数据取出请求匹配。

步骤402:基于有序性标识将不同机器中存储的分片数据进行组合,获得数据读取结果。

本公开示例性实施例的有序性标识可以用于指示不同分片数据的组合关系,其包括多有序性标识包括按照分片数据的组合关系排序的多个分片数据的标识,因此,可以基于每个分片数据的标识从对应机器获取分片数据,按照分片数据的组合关系多个分片数据存储标识对应的分片数据,获得数据读取结果。

本公开示例性实施例还可以实施多灰度策略,实现无故障上线,例如,可以对某一部分数据增加前缀标识,附加有该前缀标识的数据自动命中本公开实施例的方案,未增加前缀标识的数据还是用之前的方式进行数据处理。

示例性的,在进行数据存储时,可以对每个数据节点对应的数据进行监控,并建立白名单,该白名单中的用户数据为支持灰度策略的数据,例如,可以对需要执行本公开是理性方法的原始数据对应的键信息key增加前缀,可以为perfix+key,进而,所有键信息为perfix+key的原始数据执行本公开示例性实施例的方法,其他键信息key则执行其他方案。

多灰度策略还可以包括基于用户地址,用户身份识别码,用户使用机器信息对多个原始数据进行分流。例如,当基于用户地址A对多个原始数据进行分流时,可以直接为地址信息为A的原始数据执行本公开示例性实施例的方法,其余地址信息的多个原始数据执行其他方法,以此对数据实现分流,从而使得对数据的处理更加快速。并且基于多种分流策略,可以线上逐步灰度放量调节,保证上线平滑升级。

本公开示例性实施例在方案对外使用方式完全兼容原方式,可以屏蔽实现细节,在对原系统改造过程中,只需要个位数改动代码改动行数,并且本公开通过数据处理逻辑优化,不需要对现有缓存组件硬件设备进行升级,因此,不仅节约成本,而且上线方式兼容性高,使用简单。

本公开示例性实施例中提供的一个或多个技术方案,可以基于数据量分片阈值对原始数据进行分片,从而获得原始数据的多个分片数据,且每个数据量分片阈值小于预设数据容量。基于此,当进行数据存储时,对于大于预设数据容量的原始数据来说,可以从数据量的尺度对原始数据进行切分,从而获得多个分片数据,因此,随着业务量的增加,分片数据的数据量不会发生变化。此时,将多个分片数据存储在不同的机器时,降低了机器缓存不足和网络堵塞的情况,从而提高数据存储效率。而且,不需要增加高性能的硬件设备以及不需要人工干预,从而减少成本。

同时,本公开示例性实施例还可以基于多个分片数据的存储地址和多个分片数据的组合关系,确定原始数据的有序性标识,将有序性标识存储在不同的机器中。在此基础上,可以响应于数据取出请求,基于数据取出请求从分布式存储机器获取与数据取出请求匹配的有序性标识,基于有序性标识将不同机器中存储的分片数据进行组合,获得最终数据读取结果。可见,本公开示例性实施例在存储多个分片数据时,并不需要对上线系统进行重构,仅对数据进行了进行处理,从而降低了上线风险,减少线上故障所带来的业务损失。

上述主要从服务器的角度对本公开实施例提供的方案进行了介绍。可以理解的是,服务器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。

本公开实施例可以根据上述方法示例对服务器进行功能单元的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,本公开示例性实施例提供一种数据存储装置,该数据存储装置可以为服务器或应用于服务器的芯片。图5示出了根据本公开示例性实施例的数据存储装置的功能模块示意性框图。如图5所示,该数据存储装置500包括:

分片模块501,用于基于数据量分片阈值对原始数据进行分片,获得所述原始数据的多个分片数据,所述数据量分片阈值小于预设数据容量;

确定模块502,用于基于多个分片数据的标识和多个所述分片数据的组合关系,确定有序性标识;

存储模块503,用于将所述有序性标识和多个所述分片数据存储在不同的机器中。

在一种可能的实现方式中,所述原始数据的数据量与所述分片数据的数量正相关,所述分片数据的数据量小于或等于所述数据量分片阈值。

在一种可能的实现方式中,所述有序性标识包括按照分片数据的组合关系排序的多个分片数据的标识。

在一种可能的实现方式中,存储模块503还用于基于所述有序性标识和所述原始数据的标识确定所述原始数据的自描述结构体;基于每个所述分片数据确定所述分片数据的自描述结构体;将所述原始数据的自描述结构体存储于第一机器的存储空间;将多个所述分片数据的自描述结构体存储于第二机器的存储空间。

在一种可能的实现方式中,若所述第一机器中存在已创建的所述第一机器的第一存储空间,确定所述原始数据的自描述结构体的数据量与所述第一机器的第一存储空间的容量匹配;若所述第一机器中存在已创建的所述第一机器的第一存储空间,若所述原始数据的自描述结构体与所述第一机器的第一存储空间的容量不匹配,在所述第一机器中创建所述第一机器的第二存储空间;若所述第一机器中不存在已创建的所述第一机器的第一存储空间,在所述第一机器中创建与所述原始数据的自描述结构体的数据量匹配的所述第二存储空间。

在一种可能的实现方式中,响应于所述第一存储空间存储所述原始数据的自描述结构体存储失败,提示原始数据的自描述结构体存储失败的消息。

在一种可能的实现方式中,若所述第二机器中存在已创建的所述第二机器的第一存储空间,确定所述分片数据的自描述结构体的数据量与所述第二机器的第一存储空间的容量匹配;若所述第二机器中存在已创建的所述第二机器的第一存储空间,若所述分片数据的自描述结构体与所述第二机器的第一存储空间的容量不匹配,在所述第二机器中创建所述第二机器的第二存储空间;若所述第二机器中不存在已创建的所述第二机器的第一存储空间,在所述第二机器中创建与所述分片数据的自描述结构体的数据量匹配的所述第二存储空间。

在一种可能的实现方式中,响应于所述第一存储空间存储所述分片数据的自描述结构体存储失败,提示分片数据的自描述结构体存储失败的消息。

在采用对应各个功能划分各个功能模块的情况下,本公开示例性实施例提供一种数据读取装置,该数据读取装置可以为服务器或应用于服务器的芯片。图6示出了根据本公开示例性实施例的数据读取装置的功能模块示意性框图。如图6所示,该数据读取装置600包括:

响应模块601,用于响应于数据取出请求,基于数据取出请求从分布式存储机器获取与所述数据取出请求匹配的有序性标识,所述有序性标识用于指示不同分片数据的组合关系,所述有序性标识和不同所述分片数据存储在不同的机器中,每个所述分片数据的数据量小于预设数据容量;

获取模块602,用于基于所述有序性标识将不同所述机器中存储的所述分片数据进行组合,获得数据读取结果。

在一种可能的实现方式中,获取模块602还用于所述有序性标识包括分片数据的组合关系和多个分片数据的标识,所述基于所述有序性标识将不同所述机器中存储的所述分片数据进行组合,获得数据读取结果,包括:基于每个所述分片数据的标识从对应机器获取所述分片数据;按照所述分片数据的组合关系多个所述分片数据存储标识对应的所述分片数据,获得所述数据读取结果。

图7示出了根据本公开示例性实施例的芯片的示意性框图。如图7所示,该芯片700包括一个或两个以上(包括两个)处理器701和通信接口702。通信接口702可以支持服务器执行上述方法中的数据收发步骤,处理器701可以支持服务器执行上述方法中的数据处理步骤。

可选的,如图7所示,该芯片700还包括存储器703,存储器703可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,NVRAM)。

在一些实施方式中,如图7所示,处理器701通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。处理器701控制终端设备中任一个的处理操作,处理器还可以称为中央处理单元(central processing unit,CPU)。存储器703可以包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储器703的一部分还可以包括NVRAM。例如应用中存储器、通信接口以及存储器通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图7中将各种总线都标为总线系统704。

上述本公开实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processing,DSP)、ASIC、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例的方法。

本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。

本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。

参考图8,现将描述可以作为本公开的服务器或客户端的电子设备的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

电子设备800中的多个部件连接至I/O接口805,包括:输入单元806、输出单元807、存储单元808以及通信单元809。输入单元806可以是能向电子设备800输入信息的任何类型的设备,输入单元806可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元807可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元808可以包括但不限于磁盘、光盘。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。

计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理。例如,在一些实施例中,本公开示例性实施例的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。在一些实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行本公开示例性实施例的方法。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、终端、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。

尽管结合具体特征及其实施例对本公开进行了描述,显而易见的,在不脱离本公开的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本公开的示例性说明,且视为已覆盖本公开范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包括这些改动和变型在内。

相关技术
  • 一种L2P表管理方法、数据读取方法、装置及设备
  • 一种数据读取方法及装置
  • 一种数据发送方法、数据存储方法及装置
  • 一种数据存储的方法、数据下载的方法、装置及电子设备
  • 一种数据存储方法及装置、一种计算设备及存储介质
  • 一种数据存储介质、数据读取装置及数据读取和存储方法
  • 数据存储装置、数据存储方法以及数据读取方法
技术分类

06120116337523