数据预热方法、装置、服务器及存储介质与流程

文档序号:18009605发布日期:2019-06-25 23:50阅读:319来源:国知局
数据预热方法、装置、服务器及存储介质与流程

本申请涉及数据缓存技术领域,特别涉及一种数据预热方法、装置、服务器及存储介质。



背景技术:

在互联网应用的大部分业务场景中,需要服务器从其他的数据存储设备中获取数据,并传输至终端。在终端数量较多且终端请求的数据量巨大的业务场景中,为了可以让数据更快、更全的传输至终端,最普遍的做法是将数据存储设备中存储的数据预先缓存至服务器的内存中。这样,在服务器接收到终端发送的请求时,可以启动对应的服务进程,通过该服务进程从服务器的内存中获取对应的数据,进而传输至终端。

实际应用中,服务器可能会因为一些因素而重启,这样,就需要重新将数据加载至服务器的内存中,以实现数据的预热。具体地,服务器重启时,可以启动服务进程,并向服务网关发送通知消息,以指示服务进程可以开始对外提供服务。同时,还可以通过该服务进程进行数据预热。由于该服务进程进行数据预热的过程需要一定的时间,如果在数据预热的过程中接收到终端发送的请求,此时,按照上述方法传输至终端的数据可能并不完整。



技术实现要素:

本申请提供了一种数据预热方法、装置、服务器及存储介质,可以解决服务进程在对提供服务时传输数据的不完整的问题。所述技术方案如下:

第一方面,提供了一种数据预热方法,所述方法包括:

获取待预热的多条数据的数据摘要,所述数据摘要中包括所述多条数据的数据条数、每条数据的数据量和存储地址,所述多条数据的数据量均处于参考数据量范围内;

基于所述多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热所述多条数据所需的线程数,所述参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,所述通知发送时刻是指所述服务进程向服务网关发送能够对外提供服务的通知的时刻;

基于所述可预热数据条数、所述线程数和所述多条数据中每条数据的存储地址,对所述多条数据进行预热。

可选地,所述基于所述多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热所述多条数据所需的线程数,包括:

确定所述多条数据的数据量中的最大数据量;

基于所述最大数据量,确定一个线程在所述参考数据预热时长内的可预热数据条数;

基于所述多条数据的数据条数和所述可预热数据条数,确定预热所述多条数据所需的线程数。

可选地,所述基于所述最大数据量,确定一个线程在所述参考数据预热时长内的可预热数据条数,包括:

将一个线程在单位时长内的可预热数据量与所述参考数据预热时长之间的乘积,确定为一个线程在所述参考预热时长内的可预热数据总量;

将一个线程在所述参考预热时长内的可预热数据总量与所述最大数据量之间比值向下取整,得到一个线程在所述参考数据预热时长内的可预热数据条数。

可选地,所述基于所述多条数据的数据条数和所述可预热数据条数,确定预热所述多条数据所需的线程数,包括:

将所述多条数据的数据条数与所述可预热数据条数之间的比值向上取整,得到所述线程数。

可选地,所述基于所述可预热数据条数、所述线程数和所述多条数据中每条数据的存储地址,对所述多条数据进行预热,包括:

创建多个线程,所述多个线程的数量与所述线程数相等;

根据所述可预热数据条数、所述线程数和所述多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址;

对于所述多个线程中的第一线程,根据所述第一线程对应的至少一条数据的存储地址,通过所述第一线程,对所述第一线程对应的至少一条数据进行预热,所述第一线程为所述多个线程中的任一线程。

可选地,每条数据的存储地址包括每条数据的起始地址和结束地址;

所述根据所述可预热数据条数、所述线程数和所述多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址,包括:

根据所述可预热数据条数和所述线程数,将所述多条数据划分为多组数据,每组数据包括至少一条数据;

根据每组数据包括的每条数据的起始地址和结束地址,确定分配给所述多个线程中每个线程的一组数据的起始地址和结束地址。

第二方面,提供了一种数据预热装置,所述装置包括:

获取模块,用于获取待预热的多条数据的数据摘要,所述数据摘要中包括所述多条数据的数据条数、每条数据的数据量和存储地址,所述多条数据的数据量均处于参考数据量范围内;

确定模块,用于基于所述多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热所述多条数据所需的线程数,所述参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,所述通知发送时刻是指所述服务进程向服务网关发送能够对外提供服务的通知的时刻;

预热模块,用于基于所述可预热数据条数、所述线程数和所述多条数据中每条数据的存储地址,对所述多条数据进行预热。

可选地,所述确定模块包括:

第一确定单元,用于确定所述多条数据的数据量中的最大数据量;

第二确定单元,用于基于所述最大数据量,确定一个线程在所述参考数据预热时长内的可预热数据条数;

第三确定单元,用于基于所述多条数据的数据条数和所述可预热数据条数,确定预热所述多条数据所需的线程数。

可选地,所述第二确定单元主要用于:

将一个线程在单位时长内的可预热数据量与所述参考数据预热时长之间的乘积,确定为一个线程在所述参考预热时长内的可预热数据总量;

将一个线程在所述参考预热时长内的可预热数据总量与所述最大数据量之间比值向下取整,得到一个线程在所述参考数据预热时长内的可预热数据条数。

可选地,所述第三确定单元主要用于:

将所述多条数据的数据条数与所述可预热数据条数之间的比值向上取整,得到所述线程数。

可选地,所述预热模块包括:

创建单元,用于创建多个线程,所述多个线程的数量与所述线程数相等;

第四确定单元,用于根据所述可预热数据条数、所述线程数和所述多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址;

预热单元,用于对于所述多个线程中的第一线程,根据所述第一线程对应的至少一条数据的存储地址,通过所述第一线程,对所述第一线程对应的至少一条数据进行预热,所述第一线程为所述多个线程中的任一线程。

可选地,每条数据的存储地址包括每条数据的起始地址和结束地址;

所述第四确定单元主要用于:

根据所述可预热数据条数和所述线程数,将所述多条数据划分为多组数据,每组数据包括至少一条数据;

根据每组数据包括的每条数据的起始地址和结束地址,确定分配给所述多个线程中每个线程的一组数据的起始地址和结束地址。

第三方面,提供了一种服务器,所述服务器包括:

处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;

所述存储器用于存放计算机程序;所述处理器用于执行所述存储器上所存放的程序,以实现上述第一方面提供的所述方法的步骤。

第四方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的所述方法的步骤。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的所述方法的步骤。

本申请提供的技术方案带来的有益效果至少可以包括:

在本申请中,参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,通知发送时刻是指服务进程向服务网关发送能够对外提供服务的通知的时刻,也即是,在服务进程重启之后且经过参考数据预热时长的时刻需要向服务网关发送对外提供服务的通知。而且,由于待预热的多条数据的数据量均处于参考数据量范围内,也即是,每条数据的数据量相差很小,因此可以基于多条数据的数据条数和每条数据的数据量确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数。这样,可以保证在参考数据预热时长内完成对该多条数据的预热,也即是,在服务进程向服务网关发送对外提供服务的通知时能够完成多条数据的预热,从而在终端请求数据时,可以确保传输至终端的数据是完整的。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种数据预热的系统架构图;

图2是本申请实施例提供的一种数据预热方法的流程示意图;

图3是本申请实施例提供的另一种数据预热方法的流程示意图;

图4是本申请实施例提供的一种数据预热装置的结构示意图;

图5是本申请实施例提供的一种服务器的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

为了便于理解,在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及的系统架构进行介绍。

图1是本申请实施例提供的一种数据预热的系统架构图。参见图1,该系统架构包括存储设备01、服务器02和终端03。存储设备01可包括多种分布式或本地存取式的数据存储器中的任一者。例如,硬盘驱动器、蓝光光盘、只读光盘或快闪存储器。存储设备01与服务器02之间可以通过无线网络或者有线网络相连。这样,服务器02重启后,服务器02中的服务进程可以获取存储设备01上存储的数据,并预先缓存至服务器02的内存中,以实现数据的预热。终端03可以为手机、笔记本的电脑、计算机等,终端03与服务器02之间可以通过无线网络或者有线网络相连。这样,终端03可以向服务器02发送请求,服务器02接收到终端03发送的请求时,可以启动对应的服务进程,并通过该服务进程从服务器02的内存中获取对应的数据,进而传输至终端03。

在介绍完本申请实施例涉及的系统架构之后,下面对本申请实施例进行详细的解释说明。

图2是本申请实施例提供的一种数据预热方法的流程示意图。该方法应用于服务器中的服务进程,参见图2,该方法包括如下步骤。

步骤201:获取待预热的多条数据的数据摘要。

其中,该数据摘要中包括该多条数据的数据条数、每条数据的数据量和存储地址,该多条数据的数据量均处于参考数据量范围内。

步骤202:基于该多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数。

其中,参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,该通知发送时刻是指该服务进程向服务网关发送能够对外提供服务的通知的时刻。

步骤203:基于可预热数据条数、该线程数和该多条数据中每条数据的存储地址,对该多条数据进行预热。

在本申请中,参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,通知发送时刻是指服务进程向服务网关发送能够对外提供服务的通知的时刻,也即是,在服务进程重启之后且经过参考数据预热时长的时刻需要向服务网关发送对外提供服务的通知。而且,由于待预热的多条数据的数据量均处于参考数据量范围内,也即是,每条数据的数据量相差很小,因此可以基于多条数据的数据条数和每条数据的数据量确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数。这样,可以保证在参考数据预热时长内完成对该多条数据的预热,也即是,在服务进程向服务网关发送对外提供服务的通知时能够完成多条数据的预热,从而在终端请求数据时,可以确保传输至终端的数据是完整的。

可选地,基于该多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数,包括:

确定该多条数据的数据量中的最大数据量;

基于最大数据量,确定一个线程在该参考数据预热时长内的可预热数据条数;

基于该多条数据的数据条数和可预热数据条数,确定预热该多条数据所需的线程数。

可选地,基于最大数据量,确定一个线程在该参考数据预热时长内的可预热数据条数,包括:

将一个线程在单位时长内的可预热数据量与该参考数据预热时长之间的乘积,确定为一个线程在该参考预热时长内的可预热数据总量;

将一个线程在该参考预热时长内的可预热数据总量与该最大数据量之间比值向下取整,得到一个线程在该参考数据预热时长内的可预热数据条数。

可选地,基于该多条数据的数据条数和可预热数据条数,确定预热该多条数据所需的线程数,包括:

将该多条数据的数据条数与可预热数据条数之间的比值向上取整,得到该线程数。

可选地,基于可预热数据条数、线程数和该多条数据中每条数据的存储地址,对该多条数据进行预热,包括:

创建多个线程,该多个线程的数量与线程数相等;

根据该可预热数据条数、线程数和该多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址;

对于该多个线程中的第一线程,根据第一线程对应的至少一条数据的存储地址,通过第一线程,对第一线程对应的至少一条数据进行预热,第一线程为该多个线程中的任一线程。

可选地,每条数据的存储地址包括每条数据的起始地址和结束地址;

根据可预热数据条数、线程数和该多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址,包括:

根据可预热数据条数和线程数,将该多条数据划分为多组数据,每组数据包括至少一条数据;

根据每组数据包括的每条数据的起始地址和结束地址,确定分配给该多个线程中每个线程的一组数据的起始地址和结束地址。

上述所有可选技术方案,均可按照任意结合形成本申请的可选实施例,本申请实施例对此不再一一赘述。

图3是本申请实施例提供的一种数据预热方法的流程示意图。该方法应用于服务器中的服务进程,参见图3,该方法包括如下步骤。

步骤301:获取待预热的多条数据的数据摘要。

为了便于服务器接收到终端发送的请求时,能够更快、更全的将终端所请求的数据传输至终端,服务进程可以在服务器重启时,获取待预热的多条数据的数据摘要。其中,该数据摘要中可以包括该多条数据的数据条数、每条数据的数据量和存储地址。

服务进程获取待预热的多条数据的数据摘要的具体实现方式可以为:确定待预热的多条数据,获取待预热的多条数据的数据条数、每条数据的数据量和存储地址,将获取的待预热的多条数据的数据条数、每条数据的数据量和存储地址作为待预热的多条数据的数据摘要。

通常情况下,在服务器重启之后,需要预热大量的数据,且这些数据的数据量参差不齐,因此,为了避免待预热的多条数据的数据量相差较大,可以从待预热的所有数据中筛选出数据量处于参考数据量范围内的数据,并将筛选出的多条数据确定为待预热的多条数据。也即是,待预热的多条数据的数据量均处于参考数据量范围内。参考数据量范围可以是针对待预热的所有数据设置的多个参考数据量范围中的任一个。也即是,将待预热的所有数据按照多个参考数据量范围进行划分,得到每个参考数据量范围对应的一批数据,将每个参考数据量范围对应的一批数据可以称为待预热的多条数据,这样服务进程可以按照本申请提供的方法,对每个参考数据量范围对应的一批数据进行预热。

需要说明的是,在对待预热的所有数据进行预热时,为了避免所有数据的数据量相差较大,导致部分数据预热完成后的一定时长内才能完成其他数据的预热,从而导致待预热的所有数据不能同步完成预热,因此可以通过多个参考数据量范围对待预热的整体数据进行划分,也即是上述描述的方法,从而保证划分后得到的每一批数据的数据量位于对应的参考数据量预热范围内,这样,可以保证同一批数据能够同步完成预热。

还需要说明的是,该多个参考数据量范围的设置方式可以为:预先设置一定的数据量步长,确定待预热的所有数据的数据量中的最小数据量,之后将最小数据量与数据量步长的n倍之和作为参考数据量范围的最小边界值,将最小数据量与数据量步长的(n+1)倍之和作为参考数据量步长的最大边界值,从而得到多个参考数据量范围。其中,n为大于或等于0的整数。比如,假设数据量步长为10k,待预热的所有数据的数据量中的最小数据量为5k,则该多个参考数据量范围可以包括(5k,15k)、(15k,25k)、(25k,35k)等。

在服务进程获取到该多条数据的数据摘要后,可以基于该多条数据的数据摘要确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数,也即是可以基于该多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数。具体地,可以按照如下步骤302-步骤304实现。

其中,该参考数据预热时长可以是指服务进程的重启时刻与通知发送时刻之间的时长,该通知发送时刻可以是指该服务进程向服务网关发送能够对外提供服务的通知的时刻,以确保在参考数据预热时长后,服务进程能够完成对该多条数据的预热,同时向服务网关发送对外服务通知。

步骤302:确定该多条数据的数据量中的最大数据量。

在一种可能的实现方式中,由于该多条数据的数据量均位于参考数据量范围内,因此可以直接将参考数据量范围的最大边界值确定为该多条数据的数据量中的最大数据量。

继续上述举例,假设步骤301中获取的多条数据的数据量处于(5k,15k)的参考数据量范围内,此时可以将该参考数据量范围的最大边界值15k确定为该多条数据的数据量中的最大数据量。

当然,为了避免该多条数据的数据量中的最大数据量并不等于参考数据量范围的最大值,在另一种可能的实现方式中,还可以从该多条数据的数据量中选择数据量最大的一条数据,并将该条数据的数据量确定为最大数据量。

继续上述举例,假设步骤301中获取到的多条数据包括10条数据,且该多条数据的数据量分别为6k、5k、7k、6k、8k、9k、7k、5k、8k和9k,这样获取到的这10条数据的数据量中的最大数据量为9k。当然,获取到的10条数数据只是为了进行示例性说明,实际中待预热的一批数据的数据条数可以远远大于10条。

步骤303:基于最大数据量,确定一个线程在该参考数据预热时长内的可预热数据条数。

示例性地,将一个线程在单位时长内的可预热数据量与该参考数据预热时长之间的乘积,确定为一个线程在该参考预热时长内的可预热数据总量,将一个线程在该参考预热时长内的可预热数据总量与最大数据量之间比值向下取整,得到一个线程在该参考数据预热时长内的可预热数据条数。

其中,一个线程在单位时长内的可预热数据量可以通过压测的方式进行确定。将一个线程在该参考预热时长内的可预热数据总量与最大数据量之间比值向下取整,可以确保一个线程在参考预热时长内能够完成可预热数据条数的数据的预热。

假设通过压测的方式确定一个线程的可预热数据量为10*104k/s,参考数据预热时长为0.05s,则一个线程在参考数据预热时长内的可预热数据总量为可预热数据量10*104k/s与参考数据预热时长0.05s的乘积,也即是一个线程在参考数据预热时长内的可预热数据总量为5*103k。之后,假设获取的多条数据的数据量中的最大数据量为9k,则将一个线程在该参考预热时长内的可预热数据总量5*103k与最大数据量9k之间比值向下取整,并将向下取整得到的555作为一个线程在参考数据预热时长内的可预热数据条数。

这样,实际运行过程中,一个线程在参考数据热预设长内能够预热的最大数据量为可预热数据条数555和多条数据的数据量中的最大数据量为9k之间的乘积,也即是一个线程在参考数据热预设长内能够预热的最大数据量为4995k,小于一个线程在参考数据预热时长内的可预热数据总量为5*103k,从而确保一个线程在参考预热时长内能够完成可预热数据条数的数据的预热。

步骤304:基于该多条数据的数据条数和一个线程在该参考数据预热时长内的可预热数据条数,确定预热该多条数据所需的线程数。

在确定了一个线程在参考预热时长内的可预热数据条数后,可以将该多条数据的数据条数与一个线程在该参考数据预热时长内的可预热数据条数之间的比值向上取整,得到该线程数,以保证在参考预热时长内,能够通过个数与该线程数相等的多个线程完成对待预热的多条数据的预热。

继续上述举例,假设待预热的多条数据的数据条数为10*104,一个线程在参考数据预热时长内的可预热数据条数555,将该多条数据的数据条数10*104与一个线程在该参考数据预热时长内的可预热数据条数555之间的比值向上取整,并将向上取整得到的181确定为该线程数。

在确定了一个线程在参考预热时长内的可预热数据条数,以及预热该多条数据所需的线程数后,服务进程可以基于可预热数据条数、线程数和该多条数据中每条数据的存储地址,对该多条数据进行预热。具体地,可以按照如下步骤305-步骤307实现。

步骤305:创建多个线程,该多个线程的数量与线程数相等。

步骤306:根据一个线程在该参考数据预热时长内的可预热数据条数、线程数和该多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址。

由于每条数据的存储地址可以包括每条数据的起始地址和结束地址,因此本步骤的具体实施方式可以为:根据一个线程在该参考数据预热时长内的可预热数据条数和线程数,将该多条数据划分为多组数据,每组数据包括至少一条数据,根据每组数据包括的每条数据的起始地址和结束地址,确定分配给该多个线程中每个线程的一组数据的起始地址和结束地址。

其中,该多条数据可以按照线程数进行划分,得到多组数据,也即是多组数据的数据组数等于线程数,每组数据包括的数据条数小于或等于一个线程在该参考数据预热时长内的可预热数据条数。每组数据包括的至少一条数据可以是连续的,这样可以确定至少一条数据中第一条数据的起始地址和最后一条数据的结束地址,并将第一条数据的起始地址确定为至少一条数据的起始地址,将最后一条数据的结束地址确定为至少一条数据的结束地址,从而得到至少一条数据的存储地址,也即是得到每组数据的起始地址和结束地址。当然,每组数据包括的至少一条数据也可以是不连续的,此时可以将至少一条数据中每条数据的起始地址确定为至少一条数据的起始地址,将至少一条数据中每条数据的结束地址确定为至少一条数据的结束地址,从而得到至少一条数据的存储地址,也即是得到每组数据的起始地址和结束地址。

继续上述举例,对于获取到的待预热的10*104条数据,可以按照10*104条数据的排序进行划分,得到181组数据。其中,存在180组数据中每组数据包括的数据条数为555,剩余一组数据的数据条数为100,或者存在180组数据中每组数据包括的数据条数为554,剩余一组数据的数据条数为280。当然,181组数据中每组数据包括的数据条数还可以为其他数值,只要保证每组数据中的数据条数小于或等于555,且181组数据包括的总数据条数为10*104即可。

对于上述181组数据中的第一组数据,可以包括第一条数据到第555条数据,进而可以将第一条数据的起始地址0x0d00确定为第一组数据的起始地址,将第555条数据的结束地址0x4d42作为第一组数据的结束地址,从而得到第一组数据的起始地址和结束地址,相应地可以得到剩余180组数据中每组数据的起始地址和结束地址。

在得到每组数据的起始地址和结束地址后,由于多组数据的数据组数和线程数相等,也即是多组数据可以和多个线程一一对应,因此可以确定分配给该多个线程中每个线程的一组数据的起始地址和结束地址。

步骤307:对于该多个线程中的第一线程,根据第一线程对应的至少一条数据的存储地址,通过第一线程,对第一线程对应的至少一条数据进行预热,第一线程为该多个线程中的任一线程。

其中,该多个线程可以同步对各自对应的至少一条数据进行预热。

当至少一条数据连续时,至少一条数据的存储地址可以为至少一条数据中第一条数据的起始地址和最后一条数据的结束地址,此时服务进程可以基于第一条数据的起始地址和最后一条数据的结束地址,通过第一线程从存储设备中获取该至少一条数据,并将获取的该至少一条数据加载至服务器的内存中,以实现该至少一条数据的预热。当至少一条数据不连续时,至少一条数据的存储地址可以为至少一条数据中每条数据的起始地址和至少一条数据中每条数据的结束地址,此时服务进程可以根据每条数据的起始地址和结束地址,通过第一线程从存储设备中获取该至少一条数据,并将获取的该至少一条数据加载至服务器的内存中,以实现该至少一条数据的预热。

在本申请中,参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,通知发送时刻是指服务进程向服务网关发送能够对外提供服务的通知的时刻,也即是,在服务进程重启之后且经过参考数据预热时长的时刻需要向服务网关发送对外提供服务的通知。而且,由于待预热的多条数据的数据量均处于参考数据量范围内,也即是,每条数据的数据量相差很小,因此可以基于多条数据的数据条数和每条数据的数据量确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数。由于可预热数据条数是向下取整得到的,线程数是通过向上取整得到的,从而能够在参考数据预热时长内完成对该多条数据的预热,也即是,在服务进程向服务网关发送对外提供服务的通知时能够完成多条数据的预热,从而在终端请求数据时,可以确保传输至终端的数据是完整的。

图4是本申请实施例提供的一种数据预热装置的结构示意图。参见图4,该装置包括:

获取模块401,用于获取待预热的多条数据的数据摘要,该数据摘要中包括该多条数据的数据条数、每条数据的数据量和存储地址,该多条数据的数据量均处于参考数据量范围内;

确定模块402,用于基于该多条数据的数据条数和每条数据的数据量,确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数,该参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,该通知发送时刻是指服务进程向服务网关发送能够对外提供服务的通知的时刻;

预热模块403,用于基于可预热数据条数、线程数和该多条数据中每条数据的存储地址,对该多条数据进行预热。

可选地,确定模块402包括:

第一确定单元,用于确定该多条数据的数据量中的最大数据量;

第二确定单元,用于基于最大数据量,确定一个线程在参考数据预热时长内的可预热数据条数;

第三确定单元,用于基于该多条数据的数据条数和可预热数据条数,确定预热该多条数据所需的线程数。

可选地,第二确定单元主要用于:

将一个线程在单位时长内的可预热数据量与参考数据预热时长之间的乘积,确定为一个线程在参考预热时长内的可预热数据总量;

将一个线程在参考预热时长内的可预热数据总量与最大数据量之间比值向下取整,得到一个线程在该参考数据预热时长内的可预热数据条数。

可选地,第三确定单元主要用于:

将该多条数据的数据条数与可预热数据条数之间的比值向上取整,得到线程数。

可选地,预热模块403包括:

创建单元,用于创建多个线程,该多个线程的数量与线程数相等;

第四确定单元,用于根据可预热数据条数、线程数和该多条数据中每条数据的存储地址,确定每个线程对应的至少一条数据的存储地址;

预热单元,用于对于该多个线程中的第一线程,根据第一线程对应的至少一条数据的存储地址,通过第一线程,对第一线程对应的至少一条数据进行预热,第一线程为该多个线程中的任一线程。

可选地,每条数据的存储地址包括每条数据的起始地址和结束地址;

第四确定单元主要用于:

根据可预热数据条数和线程数,将该多条数据划分为多组数据,每组数据包括至少一条数据;

根据每组数据包括的每条数据的起始地址和结束地址,确定分配给该多个线程中每个线程的一组数据的起始地址和结束地址。

在本申请中,参考数据预热时长是指服务进程的重启时刻与通知发送时刻之间的时长,通知发送时刻是指服务进程向服务网关发送能够对外提供服务的通知的时刻,也即是,在服务进程重启之后且经过参考数据预热时长的时刻需要向服务网关发送对外提供服务的通知。而且,由于待预热的多条数据的数据量均处于参考数据量范围内,也即是,每条数据的数据量相差很小,因此可以基于多条数据的数据条数和每条数据的数据量确定一个线程在参考数据预热时长内的可预热数据条数,以及预热该多条数据所需的线程数。这样,可以保证在参考数据预热时长内完成对该多条数据的预热,也即是,在服务进程向服务网关发送对外提供服务的通知时能够完成多条数据的预热,从而在终端请求数据时,可以确保传输至终端的数据是完整的。

需要说明的是:上述实施例提供的数据预热装置在对待预热的多条数据进行预热时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据预热装置与数据预热方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图5示例了本申请一个示例性实施例提供的服务器500的结构框图。参见图5,该服务器500可以是:单个服务器,也可以是服务器集群。参见图5,服务器500可以包括处理器501和存储器502。

处理器501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器501可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器501可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器501还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器501所执行以实现本申请中方法实施例提供的一种数据预热方法。

在一些实施例中,服务器500还可选包括有:通信接口503和至少一个外围设备。处理器501、存储器502和通信接口503之间可以通过通信总线或信号线相连。各个外围设备可以通过通信总线、信号线或电路板与通信接口503相连。具体地,外围设备包括:射频电路504、显示屏505、定位组件506和电源507中的至少一种。

通信接口503可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器501和存储器502。在一些实施例中,处理器501、存储器502和通信接口503被集成在同一芯片或电路板上;在一些其他实施例中,处理器501、存储器502和通信接口503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路504用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路504包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路504可以通过至少一种无线通信协议来与其它服务器进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路504还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏505用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏505是显示屏时,显示屏505还具有采集在显示屏505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器501进行处理。此时,显示屏505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏505可以为一个,设置服务器500的前面板;在另一些实施例中,显示屏505可以为至少两个,分别设置在服务器500的不同表面或呈折叠设计;在再一些实施例中,显示屏505可以是柔性显示屏,设置在服务器500的弯曲表面上或折叠面上。甚至,显示屏505还可以设置成非矩形的不规则图形,也即异形屏。显示屏505可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

定位组件506用于定位服务器500的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件506可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。

电源507用于为服务器500中的各个组件进行供电。电源507可以是交流电、直流电、一次性电池或可充电电池。当电源507包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

本领域技术人员可以理解,图5中示出的结构并不构成对服务器500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在上述实施例中,还提供了一种包括指令的非暂态的计算机可读存储介质,该计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器所执行以实现上述图2或图3所示实施例提供的方法。

本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图2或图3所示实施例提供的方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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