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

一种数据请求处理方法、装置及计算机可读存储介质

文献发布时间:2023-06-19 09:38:30


一种数据请求处理方法、装置及计算机可读存储介质

技术领域

本发明涉及分布式服务技术领域,特别涉及一种数据请求处理方法、装置及计算机可读存储介质。

背景技术

随着大数据时代的到来,需要处理的信息量不断增加,使得越来越多的企业采用分布式服务架构,应用服务的数量及复杂度也在增长。

现有技术中,应用服务中存在数据下载需求,当数据加载频繁、数据量大时情况下,服务将面临较大的压力,容易引起性能瓶颈,导致服务输出能力下降或停止服务,严重影响用户使用性;另外,各应用服务的下拉数据功能存在重复开发,并且如果存在数据量大,无法与原有服务功能进行插拔隔离,会对服务资源造成内存溢出甚至宕机风险。

发明内容

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一,为此本发明提供一种数据请求处理方法、装置及计算机可读存储介质。

本发明实施例提供的具体技术方案如下:

第一方面,提供了一种数据请求处理方法,所述方法包括:

接收多个服务中的目标服务发送的任务请求,其中,所述任务请求是所述目标服务响应于客户端针对目标数据文件的下载请求生成的;

根据所述任务请求,创建用于下载所述目标数据文件的任务,并确定所述任务的任务权重,根据所述任务的任务权重将所述任务添加到任务队列中;

对所述任务队列中的所述任务进行异步处理以下载所述目标数据文件;

将所述目标数据文件的存储路径返回给所述客户端。

进一步地,所述任务请求中包含所述下载请求的一个或多个相关参数,所述确定所述任务的任务权重,所述确定所述任务的任务权重,根据所述任务的任务权重将所述任务添加到任务队列中,包括:

根据所述下载请求的各所述相关参数对应的预设权重值,计算所述任务的任务权重,其中,一个或多个所述相关参数包括:获取所述下载请求的业务等级和/或发起所述下载请求的用户等级;

根据所述任务的任务权重确定所述任务的优先级,根据所述任务的优先级将所述任添加到所述任务队列中。

进一步地,所述对所述任务队列中的所述任务进行异步处理以获得所述目标数据文件,包括:

根据所述目标数据文件的总数据量和预设数据量,将所述任务队列中的所述任务拆分成与组成所述目标数据文件的多个不同范围的数据块对应的多个子任务;

周期性检测所述目标服务的当前服务状态是否正常,若是,则采用预设的多个线程对多个所述子任务进行处理,以从所述目标服务中下载多个所述数据块;

对所有所述子任务成功下载的数据块在缓存中进行合并,得到所述目标数据文件。

进一步地,所述采用预设的多个线程对多个所述子任务进行处理,包括:

当所述子任务的数量未超过所述多个线程的数量时,采用所述多个线程对多个所述子任务进行并行处理;

当所述子任务的数量超过所述多个线程的数量时,采用所述多个线程对多个所述子任务进行分批处理。

进一步地,所述根据所述任务请求,创建用于下载所述目标数据文件的任务步骤之后,所述方法还包括:

将所述任务的任务标识通过所述目标服务返回至所述客户端,以供所述客户端根据所述任务标识轮询所述任务的执行进度;

所述将所述目标数据文件的存储路径返回给所述客户端,包括:

在通过所述目标服务监测到所述客户端基于所述轮询获得所述任务的执行进度为100%时,通过所述目标服务将所述目标数据文件的存储路径返回给所述客户端。

第二方面,提供了一种数据请求处理装置,所述装置包括:

接收模块,用于接收多个服务中的目标服务发送的任务请求,其中,所述任务请求是所述目标服务响应于客户端针对目标数据文件的下载请求生成的;

创建模块,用于根据所述任务请求,创建用于下载所述目标数据文件的任务;

添加模块,用于确定所述任务的任务权重,根据所述任务的任务权重将所述任务添加到任务队列中;

处理模块,用于对所述任务队列中的所述任务进行异步处理以下载所述目标数据文件;

发送模块,用于将所述目标数据文件的存储路径返回给所述客户端。

进一步地,所述任务请求中包含所述下载请求的一个或多个相关参数,所述添加模块具体用于:

根据所述下载请求的各所述相关参数对应的预设权重值,计算所述任务的任务权重,其中,一个或多个所述相关参数包括:获取所述下载请求的业务等级和/或发起所述下载请求的用户等级;

根据所述任务的任务权重确定所述任务的优先级,根据所述任务的优先级将所述任添加到所述任务队列中。

进一步地,所述处理模块包括:

拆分子模块,用于根据所述目标数据文件的总数据量和预设数据量,将所述任务队列中的所述任务拆分成与组成所述目标数据文件的多个不同范围的数据块对应的多个子任务;

处理子模块,用于周期性检测所述目标服务的当前服务状态是否正常,若是,则采用预设的多个线程对多个所述子任务进行处理,以从所述目标服务中下载多个所述数据块;

合并子模块,用于对所有所述子任务成功下载的数据块在缓存中进行合并,得到所述目标数据文件。

进一步地,所述处理子模块具体用于:

当所述子任务的数量未超过所述多个线程的数量时,采用所述多个线程对多个所述子任务进行并行处理;

当所述子任务的数量超过所述多个线程的数量时,采用所述多个线程对多个所述子任务进行分批处理。

进一步地,所述发送模块具体用于:

将所述任务的任务标识通过所述目标服务返回至所述客户端,以供所述客户端根据所述任务标识轮询所述任务的执行进度;

在通过所述目标服务监测到所述客户端基于所述轮询获得所述任务的执行进度为100%时,通过所述目标服务将所述目标数据文件的存储路径返回给所述客户端。

第三方面,提供了一种计算机设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如下操作步骤:

接收多个服务中的目标服务发送的任务请求,其中,所述任务请求是所述目标服务响应于客户端针对目标数据文件的下载请求生成的;

根据所述任务请求,创建用于下载所述目标数据文件的任务,并确定所述任务的任务权重,根据所述任务的任务权重将所述任务添加到任务队列中;

对所述任务队列中的所述任务进行异步处理以下载所述目标数据文件;

将所述目标数据文件的存储路径返回给所述客户端。

第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下操作步骤:

接收多个服务中的目标服务发送的任务请求,其中,所述任务请求是所述目标服务响应于客户端针对目标数据文件的下载请求生成的;

根据所述任务请求,创建用于下载所述目标数据文件的任务,并确定所述任务的任务权重,根据所述任务的任务权重将所述任务添加到任务队列中;

对所述任务队列中的所述任务进行异步处理以下载所述目标数据文件;

将所述目标数据文件的存储路径返回给所述客户端。

本发明提供的技术方案,通过对多个服务中的目标服务发送的任务请求创建任务,并确定所述任务的任务权重,根据所述任务的任务权重将所述任务添加到任务队列中,以及对任务队列中的任务进行异步处理,下载得到目标数据文件,并将文件存储路径返回给客户端,由此实现了应用服务中数据下载功能的解耦,无需重复开发,达到了功能服务的共享,并且在文件下载过程中减少了对目标服务的资源占用,提高了服务可用性,并可支持大数据量数据下载,且能够保证服务稳定性。

附图说明

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

图1示出了本发明实施例提供的一种数据请求处理方法的流程图;

图2示出了图1所示方法中步骤102的流程图;

图3示出了图1所示方法中步骤103的流程图;

图4示出了本发明实施例提供的一种数据请求处理装置的结构图;

图5示出了本发明实施例提供的一种计算机设备的结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

如前述背景所述,现有技术中,分布式服务中的应用服务存在数据下载需求,当数据加载频繁、数据量大时情况下,服务将面临较大的压力,容易引起性能瓶颈,导致服务输出能力下降或停止服务,严重影响用户使用性;另外,各应用服务的下拉数据功能存在重复开发,并且如果存在数据量大,无法与原有服务功能进行插拔隔离,会对服务资源造成内存溢出甚至宕机风险。为此本发明提供一种数据请求处理方法,该方法能够实现应用服务中数据下载功能的解耦,无需重复开发,达到了功能服务的共享,提高了服务可用性,并可支持大数据量数据下载,且能够保证服务稳定性。

实施例一

本发明实施例提供了一种数据请求处理方法,该方法可以应用于数据请求处理设备中,数据请求处理设备与分布式服务中的各服务进行通信连接,数据请求处理设备可以采用独立的服务器或服务器集群来实现。如图1所示,数据请求处理方法可以包括步骤:

101,接收多个服务中的目标服务发送的任务请求,其中,任务请求是目标服务响应于客户端针对目标数据文件的下载请求生成的。

本实施例中,目标服务可以是分布式服务包含的多个服务中的任一服务。用户可以通过客户端向目标服务请求下载目标数据文件,其中,数据下载请求包括与待下载数据相关的一个或多个参数,包括但不限于目标数据文件的业务等级、筛选条件参数、用户等级、客户端所属的应用标识等。当目标服务获取到客户端发送的数据下载请求时,根据该数据下载请求中的筛选条件参数进行检索是否存在对应的目标数据文件,若存在,则基于数据下载请求生成任务请求并发送至数据请求处理设备。在具体实施过程中,为了敏感数据信息的安全,目标服务还可以对数据下载请求所请求的目标数据文件进行脱敏处理后,生成任务请求发送至数据请求处理设备。

需要说明的是,目标服务可以对多个并发的数据下载请求分别进行处理生成任务请求,并将多个任务请求发送至数据请求处理设备。

可以理解的是,数据请求处理设备可以接收多个服务中发送的多个任务请求,并对各个任务请求分别采用步骤102至步骤104的过程进行处理。

102,根据任务请求,创建用于下载目标数据文件的任务,并确定任务的任务权重,根据任务的任务权重将任务添加到任务队列中。

其中,一个任务的任务权重是指该任务相对于全部任务的重要程度,在实际应用中,可以灵活地对下载请求的各种相关参数预先设置对应的权重值,通过下载请求的各相关参数对应的预设权重值来确定出任务的任务权重。

在一个优选实施方式中,任务请求中包含下载请求的一个或多个相关参数,如图2所示,上述步骤102中,确定任务的任务权重,根据任务的任务权重将任务添加到任务队列中,可以包括步骤:

1021,根据下载请求的各相关参数对应的预设权重值,计算任务的任务权重,其中,一个或多个相关参数包括:获取下载请求的业务等级和/或发起下载请求的用户等级。

其中,下载请求的业务等级可以分为多个等级,例如可以分为五级,其中业务等级越低,下载请求的紧急程度也低,对应的预设权重值越低;用户等级可以分为多个等级,例如用户等级分为三级,用户等级越高,用户的重要程度越高,对应的预设权重值越大,可以根据实际需求设置各相关参数对应的预设权重值,本发明对此不作具体限定。

具体地,数据请求处理装置在接收到目标服务发送的任务请求后,会根据任务请求,创建下载目标数据文件的任务,并对下载请求的各相关参数对应的预设权重值进行累加计算,得到该任务的任务权重。

1022,根据该任务的任务权重确定任务优先级,根据任务优先级将该任务添加到任务队列中。

其中,任务优先级决定任务在任务队列的处理顺序。

本实施例中,通过根据下载请求的各相关参数对应的预设权重值,计算任务的任务权重,将任务添加到与该任务的任务权重匹配的任务队列中,如此在请求高并发时,能够避免重要用户等待时间过长,或者紧急业务得不到及时处理的情况发生。

103,对任务队列中的任务进行异步处理以下载目标数据文件。

在一个优选实施方式中,如图3所示,上述步骤103的实现过程可以包括:

1031,根据目标数据文件的总数据量和预设数据量,将任务队列中的任务拆分成与组成目标数据文件的多个不同范围的数据块对应的多个子任务。

具体地,判断目标数据文件的总数量是否超过预设数据量,若超过,则按照目标数据文件的总数据量与预设数据量之间的比值对目标数据文件拆分为多个不同范围的数据块,并根据目标数据文件包含的数据块的数量对下载该目标数据文件的任务进行拆分成多个子任务,各个子任务具有对应的编号,不同的子任务对应下载不同范围的数据块。可以理解的是,当目标数据文件的总数量未超过预设数据量时,则不对下载该目标数据文件的任务进行拆分。

其中,上述的预设数据量可以根据实际需要进行设定。例如,假设目标数据文件的数据量共有10000条数据,预设数据量设置为1000条数据,则可以下载该目标数据文件的任务拆分为10个子任务,包括子任务1、子任务2……子任务10,分别对应下载第1-1000条数据、第1001-2000条数据、……第9001-10000条数据。本发明实施例对具体的预设数据量不作限定。

1032,周期性检测目标服务的当前服务状态是否正常,若是,则采用预设的多个线程对多个子任务进行处理,以从目标服务中下载多个数据块。

其中,服务状态可以包括CPU使用率、内存使用率、磁盘读写、网络连接状态中的一种或多种。

具体地,可以通过目标服务的服务接口周期性地获取目标服务的服务状态信息,根据目标服务的服务状态信息判断目标服务的当前服务状态是否正常时,若正常,则采用预设的多个线程对多个子任务进行处理,以从目标服务中下载多个数据块,否则,则不对子任务进行处理。上述检测目标服务的服务状态的周期时间可以根据实际需要进行设定,例如,可以是5s,即每5秒检测目标服务的当前服务状态。

本实施例中,通过周期性检测目标服务的当前服务状态是否正常,以确定是否进行子任务处理,能够保持服务的高可用性。

在一个优选实施方式中,上述步骤1032中,采用预设的多个线程对多个子任务进行处理,以从目标服务中下载多个数据块,该过程可以包括:

当子任务的数量未超过多个线程的数量时,采用多个线程对多个子任务进行并行处理;当子任务的数量超过多个线程的数量时,采用多个线程对多个子任务进行分批处理。

其中,数据请求处理设备在对每个子任务进行处理下载到对应的数据块加载到本地内存后,可以通过启动本地线程定时将本地内存中的各个数据块保存至缓存中,从而快速完成数据内存到缓存中的落盘处理,如此可以最大程度减少内存长时间被占用,减少内存溢出风险,从而提高业务处理能力。

本实施例中,通过对多个线程的数量与子任务的数量进行比较,采用多个线程对多个子任务进行并行处理或分批处理,如此采用异步和任务队列机制,并通过对子任务进行批处理的方式,能够加快数据处理的速度,避免发生阻塞。

1033,对所有子任务成功下载的数据块在缓存中进行合并,得到目标数据文件。

本实施例中,可以根据缓存中保存的数据块计算出目标数据文件的数据偏移量,以根据数据偏移量判断是否下载完成目标数据文件的所有子数据块。当周期性检测到服务状态异常时或者存在未下载的子数据块,则在下次检测到目标服务的服务状态为正常时,对未下载的子数据块对应的子任务进行处理,以下载之前未成功下载的子数据块,并追加到缓存中。

具体地,根据各个子任务对应的编号,对各个子任务下载的数据库在缓存中进行序列化处理,合并得到目标数据文件,将目标数据文件上传至云服务器进行存储。其中,目标数据文件可以支持不同格式的输出。

本实施例中,通过对所有子任务成功下载的数据块在缓存中进行合并,得到目标数据文件,如此能够避免采用本地内存进行处理而导致内存资源被占用,使得内存堆积而导致溢出的情况发生。

104,将目标数据文件的存储路径返回给客户端。

具体地,可以将目标数据文件的存储路径通过目标服务返回给客户端,以供客户端进行下载该目标数据文件。

在一种优选实施方式中,上述步骤102中根据任务请求,创建用于下载目标数据文件的任务之后,方法还可以包括:

将任务的任务标识通过目标服务返回至客户端,以供客户端根据任务标识轮询任务的执行进度;

上述步骤104中将目标数据文件的存储路径返回给客户端,可以包括:

在通过目标服务监测到客户端基于轮询获得任务的执行进度为100%时,通过目标服务将目标数据文件的存储路径返回给客户端。

本实施例中,任务的任务标识通过目标服务返回至客户端,客户端可以轮询任务标识,查询数据处理进度,当客户端轮询到任务的执行进度为100%时,客户端通过目标服务获取到目标数据文件的存储路径,进行下载目标数据文件。

本发明实施例提供一种数据请求处理方法,通过对多个服务中的目标服务发送的任务请求创建任务,并确定任务的任务权重,将任务添加到与任务权重匹配的任务队列,以及检测到目标服务的当前服务状态为正常时,对任务队列中的任务进行异步处理,下载得到目标数据文件,并将文件存储路径返回给客户端,由此实现了应用服务中数据下载功能的解耦,无需重复开发,达到了功能服务的共享,并且在文件下载过程中减少了对目标服务的资源占用,提高了服务可用性,并可支持大数据量数据下载,且能够保证服务稳定性。

实施例二

本发明实施例提供了一种数据请求处理装置,如图4所示,该装置包括:

接收模块401,用于接收多个服务中的目标服务发送的任务请求,其中,任务请求是目标服务响应于客户端针对目标数据文件的下载请求生成的;

创建模块402,用于根据任务请求,创建用于下载目标数据文件的任务;

添加模块403,用于确定任务的任务权重,根据任务的任务权重将任务添加到任务队列中;

处理模块404,用于对任务队列中任务进行异步处理以下载目标数据文件;

发送模块405,用于将目标数据文件的存储路径返回给客户端。

进一步地,任务请求中包含下载请求的一个或多个相关参数,添加模块43具体用于:

根据下载请求的各相关参数对应的预设权重值,计算任务的任务权重,其中,一个或多个相关参数包括:获取下载请求的业务等级和/或发起下载请求的用户等级;

根据任务的任务权重确定任务的优先级,根据任务的优先级将任添加到任务队列中。

进一步地,处理模块404包括:

拆分子模块,用于根据目标数据文件的总数据量和预设数据量,将任务队列中的任务拆分成与组成目标数据文件的多个不同范围的数据块对应的多个子任务;

处理子模块,用于周期性检测目标服务的当前服务状态是否正常,若是,则采用预设的多个线程对多个子任务进行处理,以从目标服务中下载多个数据块;

合并子模块,用于对所有子任务成功下载的数据块在缓存中进行合并,得到目标数据文件。

进一步地,处理子模块具体用于:

当子任务的数量未超过多个线程的数量时,采用多个线程对多个子任务进行并行处理;

当子任务的数量超过多个线程的数量时,采用多个线程对多个子任务进行分批处理。

进一步地,发送模块405具体用于:

将任务的任务标识通过目标服务返回至客户端,以供客户端根据任务标识轮询任务的执行进度;

在通过目标服务监测到客户端基于轮询获得任务的执行进度为100%时,通过目标服务将目标数据文件的存储路径返回给客户端。

本实施例提供的数据请求处理装置,与本发明实施例所提供的数据请求处理方法属于同一发明构思,可执行本发明实施例所提供的数据请求处理方法,具备执行数据请求处理方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例提供的数据请求处理方法,此处不再加以赘述。

图5为本发明实施例提供的计算机设备的内部结构图。该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据请求处理方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

接收多个服务中的目标服务发送的任务请求,其中,任务请求是目标服务响应于客户端针对目标数据文件的下载请求生成的;

根据任务请求,创建用于下载目标数据文件的任务,并确定任务的任务权重,根据任务的任务权重将任务添加到任务队列中;

对任务队列中任务进行异步处理以下载目标数据文件;

将目标数据文件的存储路径返回给客户端。

在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

接收多个服务中的目标服务发送的任务请求,其中,任务请求是目标服务响应于客户端针对目标数据文件的下载请求生成的;

根据任务请求,创建用于下载目标数据文件的任务,并确定任务的任务权重,根据任务的任务权重将任务添加到任务队列中;

对任务队列中任务进行异步处理以下载目标数据文件;

将目标数据文件的存储路径返回给客户端。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

相关技术
  • 一种数据请求处理方法、装置及计算机可读存储介质
  • 数据请求处理方法、装置及计算机可读存储介质
技术分类

06120112246274