1.本发明实施例涉及计算机技术领域,尤其涉及一种数据的请求方法、装置、终端设备及存储介质。
背景技术:2.现有技术中,数据库内的数据存在短时大量请求的情况。例如,数据库中若存储有商品库存数据,则在购物节某时间段内该数据可能被大量请求。
3.在实现本发明的过程中,发明人发现现有技术中至少存在以下技术问题:当秒级内数据的请求次数,超过数据库处理上限时,为保证服务可用性,数据库将拒绝部分请求,导致无法应对短时大量请求。
技术实现要素:4.本发明实施例提供的一种数据的请求方法、装置、终端设备及存储介质,能够提高请求的处理能力,以应对短时大量请求。
5.第一方面,本发明实施例提供了一种数据的请求方法,包括:
6.响应于预设时间内数据的请求量达到预设阈值,将所述数据拆分为子数据,以及对数据库进行分片,得到分片库;
7.将所述子数据存储至所述分片库,并记录所述子数据的标识,与存储所述子数据的分片库的标识之间的映射关系;
8.根据所述数据的请求消息所表征的子数据的标识,以及所述映射关系,确定目标分片库的标识;
9.将所述请求消息分发至与所述目标分片库标识对应的目标分片库,以请求与所述请求消息对应的子数据。
10.可选的,所述将所述数据拆分为子数据,包括:
11.按所述数据包含的数值字段的数值,将所述数据拆分为子数据;其中,所述子数据的数值字段的数值和,等于所述数据的数值字段的数值;
12.或者,按所述数据包含的字段,将所述数据拆分为子数据;其中,由所述子数据的字段组成所述数据的字段。
13.可选的,若按所述数据包含的数值字段的数值,将所述数据拆分为子数据,则所述子数据的标识相同;
14.相应的,所述确定目标分片库的标识,包括:
15.按预设负载均衡原则,循环从与所述子数据的标识对应的分片库标识中,确定目标分片库的标识,直至所述目标分片库中的子数据请求成功,和/或各所述目标分片库中子数据全部请求失败时停止循环。
16.可选的,数据的请求方法,还包括:
17.若当前分发的目标分片库中子数据请求失败,则从所述映射关系中,移除所述子
数据的标识,与当前分发的目标分片库的标识之间的映射关系。
18.可选的,数据的请求方法,还包括:
19.响应于预设时间内数据的请求量未达到预设阈值,将所述数据的请求消息分发至默认数据库,以请求与所述请求消息对应的数据。
20.可选的,应用于电商平台;所述数据包含的数值字段包括商品库存字段;
21.相应的,所述按所述数据包含的数值字段的数值,将所述数据拆分为子数据,包括:
22.从所述商品库存字段的库存量中,扣减预设比例的第一库存量,得到剩余库存量;
23.将所述剩余库存量进行划分,并将划分后每份库存量作为第二库存量;其中,所述第一库存量大于所述第二库存量;
24.按照所述第一库存量和所述第二库存量,将所述数据拆分为子数据。
25.可选的,所述请求消息包括库存检测请求;
26.相应的,在所述将所述请求消息分发至与所述目标分片库标识对应的目标分片库之后,还包括:
27.根据库存检测请求,将所述目标分片库中所述商品库存字段的当前库存量进行更新。
28.第二方面,本发明实施例提供了一种数据的请求装置,包括:
29.分片模块,用以响应于预设时间内数据的请求量达到预设阈值,将所述数据拆分为子数据,以及对数据库进行分片,得到分片库;
30.记录模块,用以将所述子数据存储至所述分片库,并记录所述子数据的标识,与存储所述子数据的分片库的标识之间的映射关系;
31.定位模块,用以根据所述数据的请求消息所表征的子数据的标识,以及所述映射关系,确定目标分片库的标识;
32.分发模块,用以将所述请求消息分发至与所述目标分片库标识对应的目标分片库,以请求与所述请求消息对应的子数据。
33.第三方面,本发明实施例提供了一种终端设备,包括:
34.一个或多个处理器;
35.存储器,用于存储一个或多个程序;
36.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所述的数据的请求方法。
37.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的数据的请求方法。
38.本发明实施例提供的一种数据的请求方法、装置、终端设备及存储介质,响应于预设时间内数据的请求量达到预设阈值,将数据拆分为子数据,以及对数据库进行分片,得到分片库;将子数据存储至分片库,并记录子数据的标识,与存储子数据的分片库的标识之间的映射关系;根据数据的请求消息所表征的子数据的标识,以及映射关系,确定目标分片库的标识;将请求消息分发至与目标分片库标识对应的目标分片库,以请求与请求消息对应的子数据。
39.通过在数据存在短时大量请求时,将数据分配至各数据库分片,能够实现将请求
均衡分发至各分片中进行处理。与传统的请求单一数据库相比,并行请求多个数据库分片,能够均衡请求单一数据库的负载,从而可提高请求处理能力,以应对短时大量请求的情况。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
41.图1示出了本发明实施例提供的一种数据的请求方法的流程图;
42.图2示出了本发明实施例提供的一种数据的请求方法中服务器各结构层的交互示意图;
43.图3示出了本发明实施例提供的一种数据的请求方法中定位目标分片库的逻辑框图;
44.图4示出了本发明实施例提供的一种数据的请求方法中数据拆分的流程图;
45.图5示出了本发明实施例提供的一种数据的请求装置的结构示意图;
46.图6示出了本发明实施例提供的一种终端设备的硬件结构示意图。
具体实施方式
47.为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
48.图1示出了本发明实施例提供的一种数据的请求方法流程图,本发明实施例提供的数据的请求方法,可适用于对数据库内数据进行请求的情况,例如适用于数据库内的数据存在短时大量请求的需求时,对数据进行请求的情况。该方法可由数据的请求装置来执行,该装置采用软件和/或硬件的方式实现,优选是配置于终端设备中,例如配置于服务器中。
49.如图1所示,本发明实施例中提供的数据的请求方法,包括如下步骤:
50.s110、响应于预设时间内数据的请求量达到预设阈值,将数据拆分为子数据,以及对数据库进行分片,得到分片库。
51.本实施例中,用来执行数据的请求方法的装置(可称为请求装置)可配置于服务器中。其中,服务器中可以包括用于存储数据的数据库,例如为redis或mysql等数据库集群,从而能够对外部提供数据库内数据的请求服务。
52.其中,服务器可以统计预设时间内,接收到针对某数据的请求消息的请求量,并可以判断请求量是否达到了预设阈值。其中,预设时间和预设阈值可以根据经验值或实验值进行确定,例如预设时间可以为0.5秒或1秒等,预设阈值可以为100个或1000个等。
53.若判断请求量达到了预设阈值,则可以认为当前出现了针该数据的短时大量请求
的情况。此时,服务器可以根据请求消息所表征的需要请求该数据中的字段内容(可称为请求字段),对该数据进行拆分;以及,可以根据数据拆分的结果对数据库进行分片。
54.其中,根据请求消息所表征的请求字段,对数据进行拆分,可以包括:若各请求消息表征的请求字段不同,则可以根据各请求字段对数据进行拆分;若请求消息表征的请求字段相同,则可以根据该相同的请求字段,对数据进行拆分。
55.示例性的,假设数据中包含字段1、字段2和字段3。如果请求消息中表征的请求字段分别为字段2和字段3,那么可以根据各请求字段将数据拆分为,包含字段2的子数据和包含字段3的子数据,且字段1可以包含于任一子数据中,或单独拆分为一个子数据。如果请求消息中表征的请求字段仅为字段1,那么可以根据该相同的请求字段将数据拆分为,包含字段11、字段2和字段3的数据,包含字段12、字段2和字段3的数据;其中,由字段11和字段12可以确定字段1。值得注意的是,上述数据划分方式仅为示例性举例,不作为划分数据的限制。
56.其中,根据数据拆分的结果对数据库进行分配,可以包括:根据拆分出的子数据条数,从数据库集群中划分出至少一个分片库。其中,分片库可以认为是数据库集群中的一个独立的数据库。其中,分片库可以包括存储拆分前数据的默认数据库(可称为主分片库),以及之前未存储拆分前数据的、从其他数据库划分出的分片库(可称为子分片库)。其中,主分片库和子分片库的数量和,可以等于子数据条数。
57.s120、将子数据存储至分片库,并记录子数据的标识,与存储子数据的分片库的标识之间的映射关系。
58.本实施例中,由于主分片库为存储拆分前数据的默认数据库,子分片库为从其他数据库中划分出的当前可供使用的数据库,可以将主分片库看作主要承担请求处理工作的数据库,子分片库看作协助缓解主分片库请求压力的辅助承担请求处理工作的数据库。因此,将拆分数据后的子数据存储至分片库,可以包括:根据子数据的请求量,将各子数据存储至各分片库。例如可以是,将请求量大的子数据存储至主分片库,将请求量小的子数据存储至各子分片库,从而在一定程度上优化了各分片库的请求负载。
59.其中,子数据的标识可以用于表征该条子数据包含的字段内容。当各子数据包含的字段相同时,各子数据的标识可以相同;当各子数据包含的字段不同时,各子数据的标识可以包括子数据包含字段的字段标识。其中,数据库的标识可以表征各分片库,例如可以包括分片库的名称、存储空间的地址等。
60.其中,将子数据存储至各分片库,可以认为将各子数据写入各分片库。当子数据存储至分片库时,还可以记录各子数据的数据标识,与存储该子数据的分片库的标识之间的映射关系。其中,例如可以以表格的形式对映射关系进行记录。
61.通过将数据拆分存储至各分片库,并记录映射关系,能够有利于将该数据的请求消息,分发至相应的分片库进行请求,从而可以实现将请求单一数据库,转化为了并行请求多个数据库,不仅提高了请求处理效率,还避免了拒绝请求的情况发生。
62.s130、根据数据的请求消息所表征的子数据的标识,以及映射关系,确定目标分片库的标识。
63.由于服务器接收的请求消息可表征请求字段,当服务器根据请求字段将数据拆分为子数据,并确定子数据的标识时,请求消息进而能够表征子数据的标识。服务器可以从映射关系中,查询与请求消息表征的子数据标识对应的分片库标识。并且,当查询得到的分片
库标识为多个时,可以从中选取一个目标分片库的标识;当查询得到的分片库标识为一个时,则可将查询到的分片库标识作为目标分片库标识。示例性的,当各子数据的标识相同时,可查询到多个分片库标识;当各子数据的标识不同时,可以查询到相对应的一个分片库的标识。
64.通过根据映射关系,能够实现对需要承担请求处理工作的目标分片库的定位。
65.s140、将请求消息分发至与目标分片库标识对应的目标分片库,以请求与请求消息对应的子数据。
66.服务器在定位出目标分片库之后,可以将请求消息分发至目标分片库;相应的目标分片库可以根据该请求消息对子数据进行请求,也可以进行进一步地处理,并可以将请求结果或处理结果进行反馈。
67.通过基于本实施例提供的数据的请求方法,能够在出现了针该数据的短时大量请求的情况时,将数据分配至各数据库分片,能够实现将请求均衡分发至各分片中进行处理。与传统的请求单一数据库相比,并行请求多个数据库分片,能够均衡请求单一数据库的负载,减弱对单一数据库资源的竞争请求关系,从而可提高请求并发处理能力,以应对短时大量请求的情况。此外,也使得数据库集群的资源利用更加均衡,提高了数据库集群的资源利用率。
68.在一些可选的实施方式中,响应于预设时间内数据的请求量未达到预设阈值,将数据的请求消息分发至默认数据库,以请求与请求消息对应的数据。
69.在这些实施例中,若服务器判断预设时间内数据的请求量没有达到预设阈值,则可以认为当前针该数据的请求量较小。此时,服务器可以无需对数据进行拆分,直接将请求消息分发至存储数据的默认数据库,以请求数据即可。从而可以提高了数据请求的灵活程度,避免了在请求量小的情况下,执行数据拆分和数据库分片步骤,可在一定程度上提高请求效率。
70.示例性的,图2示出了本发明实施例提供的一种数据的请求方法中服务器各结构层的交互示意图。参见图2,服务器可以包括但不限于:对外层210、应用集群层220、监控服务层230和数据库集群层240。相应的,请求装置可配置于服务器的应用集群层和监控服务层中。
71.其中,对外层210可以接收外部发送至服务器的请求消息,例如请求数据a的排队请求消息,请求1、...、请求1000、...请求10000;应用集群层220可以将请求消息的请求量上报至监控服务层230;监控服务层230可以根据预设时间内的请求量进行数据库集群层240中数据库的分片、数据的拆分(例如将数据a拆分为子数据a
1-an),以及子数据和分片库间映射关系的记录;相应的,应用集群层220还可以根据监控服务层230下发的映射关系,将对外层接收的请求,分发至各分片库(例如分片1-分片n),以进行子数据请求。
72.本发明实施例提供的一种数据的请求方法,响应于预设时间内数据的请求量达到预设阈值,对数据库进行分片,得到分片库;将数据拆分为子数据,将子数据存储至分片库,并记录子数据的标识,与存储子数据的分片库的标识之间的映射关系;根据数据的请求消息所表征的子数据的标识,以及映射关系,确定目标分片库的标识;将请求消息分发至与目标分片库标识对应的目标分片库,以请求与请求消息对应的子数据。
73.通过在数据存在短时大量请求时,将数据分配至各数据库分片,能够实现将请求
均衡分发至各分片中进行处理。与传统的请求单一数据库相比,并行请求多个数据库分片,能够均衡请求单一数据库的负载,从而可提高请求处理能力,以应对短时大量请求的情况。
74.本实施例在上述实施例基础上,对数据的拆分步骤,以及目标分片库的定位步骤进行了详细描述。在对数据拆分为子数据时,可以按数据包含的数值字段的数值进行拆分,或者也可以按照数据包含的字段进行拆分,从而能够在不同请求场景下,采用不同的方式对数据进行拆分,使得拆分更加灵活。
75.此外,若按照数据包含的数值字段的数值进行拆分,则拆分的各子数据的标识相同。可以认为,子数据间不存在差异,可以对任意一个分片库中的子数据进行请求。此时,可以根据负载均衡原则,循环从分片库中定位出目标分片库,以请求子数据,直至子数据请求成功,或者各目标分片库皆请求失败为止。通过在一个目标分片库请求失败时,重新定位目标分片库进行循环请求,在一定程度上可以保证请求能够被成功处理。
76.在一些可选的数据的请求方法中,将数据拆分为子数据,可以包括:按数据包含的数值字段的数值,将数据拆分为子数据;其中,子数据的数值字段的数值和,等于数据的数值字段的数值;或者,按数据包含的字段,将数据拆分为子数据;其中,由子数据的字段组成数据的字段。
77.其中,数值字段可以认为字段内容为数值的字段。其中,当请求消息表征的请求字段相同,且请求字段为数值字段时,服务器可以按数据包含的数值字段的数值,将数据拆分为子数据。并且,各子数据的数值字段的数值和,等于数据的数值字段的数值。
78.示例性的,数据中的数值字段为商品库存字段时,字段内容为库存量。假设库存量为100时,按商品库存字段的库存量,将数据拆分后的子数据,例如可以为子数据1中商品库存字段的库存量为50,子数据2中商品库存字段的库存量为30,子数据3中商品库存字段的库存量为20。
79.其中,当请求消息表征的请求字段不同时,服务器可以按数据包含的请求字段,将数据拆分为子数据。由于数据中的字段可以为请求字段,也可以为非请求字段,其中各子数据中可以包含至少一个请求字段,且非请求字段可以包含于任一子数据中,或单独拆分为一条子数据中。其中,各子数据包含的字段的合集,可等于拆分前数据的字段的总和。
80.通过在对数据拆分为子数据时,可以按数据包含的数值字段的数值进行拆分,或者也可以按照数据包含的字段进行拆分,能够在不同请求场景下,采用不同的方式对数据进行拆分,使得拆分更加灵活。
81.在一些可选的实现方式中,若按数据包含的数值字段的数值,将数据拆分为子数据,则子数据的标识相同;相应的,确定目标分片库的标识,可以包括:按预设负载均衡原则,循环从与子数据的标识对应的分片库标识中,确定目标分片库的标识,直至目标分片库中的子数据请求成功,和/或各目标分片库中子数据全部请求失败时停止循环。
82.由于按数值将数据拆分为子数据后,各子数据可皆包含未拆分前数据的各字段。此时,可以认为子数据间不存在差异,可以对任意一个分片库中的子数据进行请求,故拆分的各子数据的标识可以相同。
83.当各子数据的标识相同时,映射关系中子数据的标识和分片库的标识,可以为一对多的映射关系。此时,服务器可根据映射关系,查询到与子数据的标识对应的全部分片库的标识。其中,可以从查询到的分片库的标识中,随机选取一个标识,作为目标分片库的标
识。也可以按照预设负载均衡原则,从查询到的分片库的标识中,选取一个标识,作为目标分片库标识。
84.其中,预设负载均衡原则,可以包括将当前处理的请求负载最小的分片库,选取为目标分片库的原则。通过基于负载均衡原则,进行目标分片库的标识的选取,能够使各分片库承担的请求处理工作较为均衡,可在一定程度上提高并行处理效率。
85.在确定目标分片库标识后,可将请求消息分发至与目标分片库标识对应的目标分片库,以请求与请求消息对应的子数据。当目标分片库中子数据的数值字段的数值,小于请求消息中携带的请求数值时,可以认为目标分片库中子数据请求失败。示例性的,当消费终端购买6件商品,而目标分片库中子数据的商品库存字段的库存量为5时,可以认为当前的目标分片库表征的库存,不能满足处理该请求消息的条件,此时可以认为目标分片库中子数据请求失败。
86.若当前的目标分片库中子数据请求失败,则可以重新从查询到的分片库标识中,未被确定为目标分片库的标识里,再次确定目标分片库的标识,并将请求消息分发至新确定的目标分片库中,进行子数据请求。循环上述操作,直至当前的目标分片库中子数据请求成功,或者全部目标分片库中子数据请求失败时停止循环。
87.在这些可选的实现方式中,通过在一个目标分片库请求失败时,重新定位目标分片库进行循环请求,在一定程度上可以保证请求能够被成功处理。
88.在进一步可选的实现方式中,若当前分发的目标分片库中子数据请求失败,则从映射关系中,移除子数据的标识,与当前分发的目标分片库的标识之间的映射关系。
89.其中,当前分发的目标分片库中子数据请求失败的原因可以有多种,除上述目标分片库中子数据的数值字段的数值,小于请求消息中携带的请求数值之外,例如还可以包括目标分片库处理异常等。服务器可以在当前分发的目标分片库中子数据请求失败时,可以分析失败原因,并可在失败原因属于预设原因时,从映射关系中,移除子数据的标识,与当前分发的目标分片库的标识之间的映射关系。
90.其中,预设原因可以包括但不限于:目标分片库中子数据的数值字段的数值为零,或者目标分片库数据读取操作异常等。当失败原因属于预设原因时,可以认为,当前的目标分片库将不能处理任何请求消息。此时,通过将子数据的标识,与当前分发的目标分片库的标识之间的映射关系进行移除,能够避免请求消息被再次分发至此分片库,从而可提高处理效率。
91.此外,服务器还可以在任意目标分片库中子数据请求失败时,或者在全部目标分片库中子数据请求失败时,重新进行数据拆分和数据库分片,以优化当前各分片库的负载情况,提高请求消息的并行处理能力。
92.示例性的,图3示出了本发明实施例提供的一种数据的请求方法中定位目标分片库的逻辑框图。参见图3,数据的请求方法中定位目标分片库的逻辑框图,可以包括:
93.s1、应用集群层将请求消息的请求量上报至监控服务层。
94.s2、监控服务层下发映射关系;其中映射关系包括子数据的标识,与存储子数据的分片库的标识之间的映射关系。
95.s3、应用集群层判断映射关系中是否存在分片库的标识。
96.s4、若否,则应用集群层向默认数据库分发请求消息,并在请求成功时跳转至s7。
在一种实现方式中,即使监控服务层未进行分片、将数据进行拆分等处理,监控服务层仍可向应用集群层下发映射关系。此时,映射关系例如可以为空。
97.s5、若是,则应用集群层从分片库的标识中确定目标分片库的标识,并向目标分片库分发请求消息。
98.s6、应用集群层判断当前的目标分片库中子数据是否请求成功,若是则跳转至s7,若否则跳转至s8。
99.s7、接收返回结果。
100.s8、应用集群层重新确定目标分片库的标识,并向目标分片库分发请求消息。
101.s9、应用集群层还可向监控服务器上报请求失败消息。
102.s10、监控服务器可根据请求失败消息,跳转至s2,以下发更新后的映射关系,以使应用集群层根据更新后的映射关系进行请求消息分发。
103.本实施例在上述实施例基础上,对数据的拆分步骤,以及目标分片库的定位步骤进行了详细描述。在对数据拆分为子数据时,可以按数据包含的数值字段的数值进行拆分,或者也可以按照数据包含的字段进行拆分,从而能够在不同请求场景下,采用不同的方式对数据进行拆分,使得拆分更加灵活。
104.此外,若按照数据包含的数值字段的数值进行拆分,则拆分的各子数据的标识相同。可以认为,子数据间不存在差异,可以对任意一个分片库中的子数据进行请求。此时,可以根据负载均衡原则,循环从分片库中定位出目标分片库,以请求子数据,直至子数据请求成功,或者各目标分片库皆请求失败为止。通过在一个目标分片库请求失败时,重新定位目标分片库进行循环请求,在一定程度上可以保证请求能够被成功处理。
105.本发明实施例与上述实施例提出的数据的请求方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,且本实施例与上述实施例具有相同的有益效果。
106.本实施例在上述实施例基础上,对应用场景进行了详细描述。本实施例提供的数据的请求方法,以应用于电商平台。其中,数据可以为商品数据,且数据可以包括商品库存字段。当电商平台接收到对商品库存的库存检测请求时,可以根据商品库存字段的库存量,对数据进行拆分,以使各分片库中皆可存储分表征一部库存量的子数据。
107.从而,电商平台在购物节某时间段内接收到消费者终端大量的下单指令时,能够生成对应的商品数据的库存检测请求,并可以将该些请求分发至对应的分片库,以并行从各分片库的子数据中的库存量进行请求。与传统方法中拒绝部分请求相比,提高了请求的处理能力,避免了拒绝请求所导致的丢失订单的问题。
108.示例性的,图4示出了本发明实施例提供的一种数据的请求方法中数据拆分的流程图。参见图4,数据的请求方法应用于电商平台,且数据包含的数值字段包括商品库存字段时,按数据包含的数值字段的数值,将数据拆分为子数据,可以包括:
109.s410、从商品库存字段的库存量中,扣减预设比例的第一库存量,得到剩余库存量;
110.s420、将剩余库存量进行划分,并将划分后每份库存量作为第二库存量;其中,第一库存量大于第二库存量;
111.s430、按照第一库存量和第二库存量,将数据拆分为子数据。
112.本实施例中,数据的请求方法应用于电商平台时,数据可以为商品数据;数据包含的数值字段可以包括商品库存字段;请求消息可以为,电商平台接收到消费者终端对某商品的下单指令时,生成的对应的商品数据的库存检测请求。
113.其中,电商平台在接收到短时内大量对某商品的库存检测请求时,可以将该商品的商品数据,按照商品库存字段的库存量,将商品数据拆分为子数据。其中,预设比例可以根据经验值或实验值进行确定,例如可以为1/2或1/3。其中,可以将剩余库存量均分为各第二库存量,也可以采用其他分配方式划分为各第二库存量。其中,商品库存字段为第一库存量的子数据,可以存储在主分片库中。商品库存字段为第二库存量的子数据,可以存储在子分片库中。
114.通过将第一库存量划分为大于任意第二库存量,能够有效应付消费终端一次订购大量商品的情况,避免各分片库都处理不了库存检测请求的情况发生。此外,也可以采用其他库存分配策略进行库存量的划分,在此不做穷举。
115.在一些可选的实现方式中,请求消息包括库存检测请求;相应的,在将请求消息分发至与目标分片库标识对应的目标分片库之后,还包括:根据库存检测请求,将目标分片库中商品库存字段的当前库存量进行更新。
116.在这些可选的实现方式中,根据库存检测请求,将目标分片库中商品库存字段的当前库存量进行更新,可以包括:将目标分片库中商品库存字段的当前库存量,减去库存检测请求中携带的订购商品的数值。从而能够对当前库存量进行更新,实现对商品库存量的正确记录。
117.本发明实施例在上述实施例基础上,对应用场景进行了详细描述。本实施例提供的数据的请求方法,以应用于电商平台。其中,数据可以为商品数据,且数据可以包括商品库存字段。当电商平台接收到对商品库存的库存检测请求时,可以根据商品库存字段的库存量,对数据进行拆分,以使各分片库中皆可存储分表征一部库存量的子数据。
118.从而,在购物节某时间段内接收到消费者终端大量的下单指令时,能够生成对应的商品数据的库存检测请求,并可以将该些请求分发至对应的分片库,以并行从各分片库的子数据中的库存量进行请求。与传统方法中拒绝部分请求相比,提高了请求的处理能力,避免了拒绝请求所导致的丢失订单的问题。
119.此外,本发明实施例与上述实施例提出的数据的请求方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,且本实施例与上述实施例具有相同的有益效果。
120.图5示出了本发明实施例提供的一种数据的请求装置的结构示意图。本发明实施例提供的数据的请求装置,可适用于对数据库内数据进行请求的情况,例如适用于数据库内的数据存在短时大量请求的需求时,对数据进行请求的情况。
121.参见图5,本发明实施例提供的数据的请求装置,可以包括:
122.分片模块510,用以响应于预设时间内数据的请求量达到预设阈值,将数据拆分为子数据,以及对数据库进行分片,得到分片库;
123.记录模块520,用以将子数据存储至分片库,并记录子数据的标识,与存储子数据的分片库的标识之间的映射关系;
124.定位模块530,用以根据数据的请求消息所表征的子数据的标识,以及映射关系,
确定目标分片库的标识;
125.分发模块540,用以将请求消息分发至与目标分片库标识对应的目标分片库,以请求与请求消息对应的子数据。
126.在一些可选的实施方式中,分片模块,可包括:
127.拆分单元,用以按数据包含的数值字段的数值,将数据拆分为子数据;其中,子数据的数值字段的数值和,等于数据的数值字段的数值;或者,按数据包含的字段,将数据拆分为子数据;其中,由子数据的字段组成数据的字段。
128.在一些可选的实施方式中,若拆分单元按数据包含的数值字段的数值,将数据拆分为子数据,则子数据的标识相同;
129.相应的,定位模块,可以用于:
130.按预设负载均衡原则,循环从与子数据的标识对应的分片库标识中,确定目标分片库的标识,直至目标分片库中的子数据请求成功,和/或各目标分片库中子数据全部请求失败时停止循环。
131.在一些可选的实施方式中,记录模块,还可以用于:
132.若当前分发的目标分片库中子数据请求失败,则从映射关系中,移除子数据的标识,与当前分发的目标分片库的标识之间的映射关系。
133.在一些可选的实施方式中,分发模块,还可以用于:
134.响应于预设时间内数据的请求量未达到预设阈值,将数据的请求消息分发至默认数据库,以请求与请求消息对应的数据。
135.在一些可选的实施方式中,数据的请求装置可以应用于电商平台;数据包含的数值字段包括商品库存字段;
136.相应的,拆分单元可以用于:
137.从商品库存字段的库存量中,扣减预设比例的第一库存量,得到剩余库存量;
138.将剩余库存量进行划分,并将划分后每份库存量作为第二库存量;
139.其中,第一库存量大于第二库存量;
140.按照第一库存量和第二库存量,将数据拆分为子数据。
141.在一些可选的实施方式中,请求消息包括库存检测请求;
142.相应的,数据的请求装置还可以包括:
143.处理模块,用于在将请求消息分发至与目标分片库标识对应的目标分片库之后,根据库存检测请求,将目标分片库中商品库存字段的当前库存量进行更新。
144.本发明实施例提供的数据的请求装置,与上述实施例提供数据的请求方法属于同一发明构思,未在本发明实施例中详尽描述的技术细节可参见上述实施例,并且本发明实施例与上述实施例具有相同的有益效果。
145.图6示出了本发明实施例提供的一种终端设备的硬件结构示意图。本发明实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
146.如图6所示,终端设备600可以包括处理装置(例如中央处理器、图形处理器等)
protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
153.上述计算机可读存储介质可以是上述终端设备中所包含的,也可以是单独存在,而未装配入该终端设备中的。
154.上述终端设备存储承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备:
155.响应于预设时间内数据的请求量达到预设阈值,将数据拆分为子数据,以及对数据库进行分片,得到分片库;将子数据存储至分片库,并记录子数据的标识,与存储子数据的分片库的标识之间的映射关系;根据数据的请求消息所表征的子数据的标识,以及映射关系,确定目标分片库的标识;将请求消息分发至与目标分片库标识对应的目标分片库,以请求与请求消息对应的子数据。
156.可以以一种或多种程序设计语言或其组合来编写用于执行本发明的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
157.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能页可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
158.描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
159.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范样式的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
160.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较
为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。