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

异步任务处理方法、系统、电子设备及存储介质

文献发布时间:2023-06-19 19:18:24


异步任务处理方法、系统、电子设备及存储介质

技术领域

本申请涉及数据处理技术领域,尤其涉及一种异步任务处理方法、系统、电子设备及存储介质。

背景技术

异步是指调用方在调用过程中,不直接等待返回结果,而是执行其他任务,直至其他任务处理完成,再将处理完成的结果进行回调。

相关技术中,可以将耗时缓慢,或者需要消耗大量资源的处理逻辑从请求处理主逻辑中剥离出来,交给更具资源弹性的系统异步执行。但是,在一些应用场景中,若单个用户异步任务数量过多,会影响其他用户的异步任务的执行。

发明内容

本申请实施例的主要目的在于提出一种异步任务处理方法、系统、电子设备及存储介质,能够实现对业务的限流,和业务的某个维度的限流,能够合理分配服务资源,提高异步任务的执行效率。

为实现上述目的,本申请实施例的第一方面提出了一种异步任务处理方法,所述方法包括:获取服务器接收到的任务请求,所述任务请求包括多个待处理的异步任务;根据预设的维度,对所述异步任务进行划分,得到各个异步任务的标签信息,所述标签信息至少包含第一维度标签信息;获取预设的第一异步任务并发处理数量;根据所述第一维度标签信息和一级维度的限流规则,对所述异步任务进行限流排序,得到限流排序结果;根据所述第一异步任务并发处理数量和所述限流排序结果,调用异步任务消费者执行所述异步任务。

根据本申请的一些实施例,所述一级维度的限流规则为:具有相同或同类型第一维度标签信息的异步任务的并发处理数量不超过预设的一维任务并发处理数量;所述根据所述第一维度标签信息和一级维度的限流规则,对所述异步任务进行限流排序,得到限流排序结果,包括:根据第一异步任务并发处理数量,确定需要并发执行的异步任务数量和需要存储在缓存中间件等待执行的异步任务数量;根据一级维度的限流规则,若具有相同或同类型第一维度标签信息的异步任务并发处理数量超过预设的一维任务并发处理数量,则将超过的所述异步任务继续存储在所述缓存中间件中等待执行,将其他类型标签信息的异步任务加入并发执行的异步任务中,以得到所述限流排序结果。

根据本申请的一些实施例,所述缓存中间件设置有队列,所述根据所述第一异步任务并发处理数量和所述限流排序结果,调用异步任务消费者执行所述异步任务之后,还包括:所述异步任务消费者检测到队列中的异步任务已执行完毕;将所述缓存中间件中的等待中的所述异步任务加入所述队列,所述等待中的所述异步任务为已调度但未执行完成的所述异步任务。

根据本申请的一些实施例,所述标签信息还包括第N维度标签信息,所述N为大于或者等于2的正整数;所述根据所述第一维度标签信息和一级维度的限流规则,对所述异步任务进行限流排序,得到限流排序结果之后,还包括:获取第N维度标签信息和N级维度的限流规则;对所述异步任务更新所述限流排序,得到更新后的限流排序结果;所述N级维度的限流规则为相同或同类型第N维度标签信息的并发处理数量不超过预设的N维任务并发处理数量

根据本申请的一些实施例,所述根据所述第一异步任务并发处理数量和所述限流排序结果,调用异步任务消费者执行所述异步任务,包括:确定预设的执行排队策略;其中,执行排队策略包括先进先出排队策略或权重排队策略;根据所述第一异步任务并发处理数量、限流排序结果、所述预设的执行排队策略,调用异步任务消费者执行所述异步任务。

根据本申请的一些实施例,所述根据所述第一异步任务并发处理数量和所述限流排序结果,调用异步任务消费者执行所述异步任务,包括:若所述执行排队策略为先进先出排队,则将先进入队列中的所述异步任务先执行,待先进入所述队列中的所述异步任务执行完毕后,再执行后进入所述队列的所述异步任务;若所述排队策略为权重排队,则在每次异步任务进入所述队列时,对队列中所有所述异步任务根据任务权重进行排队,先执行任务权重大的所述异步任务,再执行任务权重小的所述异步任务;或者先执行任务权重小的所述异步任务,再执行任务权重大的所述异步任务。

根据本申请的一些实施例,所述根据所述第一异步任务并发处理数量和所述限流排序结果,调用异步任务消费者执行所述异步任务之后,还包括:若单个所述异步任务执行失败,判断是否超过重试的次数;如果没有超过,调用所述异步任务消费者重新执行所述异步任务;和/或,获取预设的所述异步任务的预设执行时间;判断各个所述异步任务的执行时间是否超过所述预设执行时间;如果超过所述预设执行时间,则判断所述异步任务的执行状态为超时状态。

为了实现上述目的,本申请第二方面实施例提出了一种异步任务处理系统,所述系统包括:任务请求获取模块,用于获取服务器接收到的任务请求,所述任务请求包括多个待处理的异步任务;异步任务划分模块,用于根据预设的维度,对所述异步任务进行划分,得到各个异步任务的标签信息,所述标签信息至少包含第一维度标签信息;第一异步任务并发处理数量获取模块,用于获取预设的第一异步任务并发处理数量;异步任务排序模块,用于根据所述第一维度标签信息和一级维度的限流规则,对所述异步任务进行限流排序,得到限流排序结果;异步任务执行模块,用于根据所述第一异步任务并发处理数量和所述限流排序结果,调用异步任务消费者执行所述异步任务。

为了实现上述目的,本申请第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请第一方面实施例任一项所述的异步任务处理方法。

为了实现上述目的,本申请第四方面实施例提出了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本申请第一方面实施例任一项所述的异步任务处理方法。

本申请提出的异步任务处理方法、系统、电子设备及存储介质,能够解决在一些应用场景中,若单个用户异步任务数量过多,影响其他用户的异步任务执行的问题。通过实现对异步任务的限流,和异步任务的某个维度的限流,能够避免单个任务执行时间过长,影响其他维度任务的执行,能够合理分配服务资源,提高异步任务的执行效率。

附图说明

图1是本申请实施例提供的异步任务的总体硬件架构示意图;

图2是本申请实施例提供的异步任务处理方法的流程图;

图3是图2中的步骤S104得到限流排序结果的流程图;

图4是本申请增加异步任务处理的过程图;

图5是图2中的步骤S105之后将等待中的异步任务加入队列的流程图;

图6是图2中的步骤S104之后得到更新后的限流排序结果流程图;

图7是图2中的步骤S105的流程图;

图8是图2中的步骤S105中排队策略的流程图;

图9是图2中的步骤S105之后判断异步任务执行状态的流程图;

图10是本申请实施例异步任务执行状态图;

图11是本申请实施例中异步任务的总体执行过程图;

图12是本申请实施例提供的异步任务处理系统的功能模块示意图;

图13是本申请实施例提供的电子设备的硬件结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

相关技术中,长耗时、消耗大量资源,或者容易出错的逻辑,可以将其从请求主流程中剥离出来,异步执行。例如一般情况下,在用户上传图片时,图片上传后需要生成不同大小的缩略图,但是,对图片处理过程不必包含在图片上传处理流程中,生成缩略图等处理逻辑可以作为异步任务执行,用户上传图片成功后就可以结束流程。这样应用服务器避免被图片处理等计算密集型任务压垮,用户也能更快的得到响应。可以理解的是,多个任务可以同时异步执行,如对图片的处理可以包括生成缩略图、加水印、鉴黄、转码,与此同时,还能够同时执行文档处理的操作,对文档的处理可以包括转换格式、导出文档等处理。

在一些应用场景中,会出现单个异步任务数量过多,会影响其他用户的异步任务执行,如对图片的处理相关的任务数量过多,执行完毕会耗费一定的时间,影响其他异步任务的执行,因此,需要对单个异步任务的数量进行限制。

基于此,本申请实施例提供了一种异步任务处理方法、系统、电子设备及存储介质,能够实现对异步任务的限流,和异步任务的某个维度的限流,从而避免了单个任务执行时间过长,影响后续任务的执行,同时能够合理分配服务资源,提高异步任务的执行效率。

需要说明的是,在本申请的各个具体实施方式中,当涉及到需要根据用户信息、用户行为数据,用户历史数据以及用户位置信息等与用户身份或特性相关的数据进行相关处理时,都会先获得用户的许可或者同意,例如,获取用户存储的数据以及用户的缓存数据访问请求时,均会先获得用户的许可或者同意。而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本申请实施例需要获取用户的敏感个人信息时,会通过弹窗或者跳转到确认页面等方式获得用户的单独许可或者单独同意,在明确获得用户的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的用户相关数据。

本申请实施例提供的异步任务处理方法、系统、电子设备及存储介质,具体通过如下实施例进行说明,首先对本申请实施例中的异步任务的总体硬件架构作一个说明,本申请实施例中的异步任务处理方法可应用于此系统架构中。

参照图1,在一些实施例中,异步任务的总体硬件架构包括但不限于服务器101、缓存中间件102、控制器103。可以理解的是,缓存中间件102上存储有队列,队列用于存放等待执行的异步任务并对异步任务进行排序。示例性的,缓存中间件102可以用于存储指令和数据。在一些实施例中,缓存中间件102可以为高速缓冲存储器,可以用来保存刚用过或循环使用的指令或数据。可以理解的是,如果该指令或数据需要再次使用,可从缓存中间件102中直接调用。在一些实施例中,设置缓存中间件102,避免了重复存取异步任务,减少了异步任务处理系统的等待时间,因而提高了异步任务执行的效率。

在一些实施例中,控制器103上设置有异步任务执行器104,用于调用异步任务消费者执行异步任务。在一些实施例中,异步任务消费者用于执行异步任务。可以理解的是,控制器103可以是电子设备的神经中枢和指挥中心。具体的,控制器103可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

本申请实施例中的异步任务处理方法可以通过如下实施例进行说明。

请参照图2,本申请一个实施例提出了一种异步任务处理方法,方法包括如下步骤S101至步骤S105:

步骤S101,获取服务器接收到的任务请求,任务请求包括多个待处理的异步任务;

步骤S102,根据预设的维度,对异步任务进行划分,得到各个异步任务的标签信息,标签信息至少包含第一维度标签信息;

步骤S103,获取预设的第一异步任务并发处理数量;

步骤S104,根据第一维度标签信息和一级维度的限流规则,对异步任务进行限流排序,得到限流排序结果;

步骤S105,根据第一异步任务并发处理数量和限流排序结果,调用异步任务消费者执行异步任务。

在一些实施例中,任务请求由服务器获取,控制器根据指令操作码对任务请求进行划分,可以理解的是,任务请求包括异步任务请求和非异步任务请求,异步任务指的是从主流程中剥离出来执行的任务,非异步任务指的是由主流程执行的任务。可以理解的是,异步任务执行完毕后,会返回主流程。

示例性的,异步任务一般为长耗时、需要消耗大量资源,或者容易出错的任务,若将其由主流程执行,会对其他正常耗时较短、消耗少量资源或不容易出错的任务造成影响。在一些实施例中,异步任务有多个,例如发送电子邮件或者即时消息、检查垃圾邮件、文档处理、音视频处理,图片处理、调用外部的三方服务、导入/导出大量数据等等。

可以理解的是,预设的维度可以指异步任务的维度。在一些实施例中,若异步任务为各个企业提供服务,那么第一维度的异步任务可以为异步处理的系统同步执行的企业任务信息,第二维度的异步任务可以为各企业的子公司任务信息,第三维度的异步任务可以为各子公司的部门任务信息,第四维度的异步任务可以为各部门的小组任务信息等等。

在一些实施例中,根据预设的维度,对异步任务进行划分之后,得到各个异步任务的标签信息,可以理解的是,标签信息可以为异步任务占用的内存大小信息、异步任务存入缓存中间件的时间信息、异步任务的预计执行时间信息、异步任务的类别信息等等。在一些实施例中,标签信息至少包含第一维度标签信息,可选的,标签信息还可以包含多个维度的多个标签信息。可以理解的是,获取异步任务的标签信息,可以便于后续异步任务的调用,节约了调用时间,使得异步任务的存放更加有序,确保异步任务的高效执行。

在一些实施例中,预设的第一异步任务并发处理数量为异步任务处理系统并发处理的预设的异步任务数量。示例性的,若有4个异步任务,甲、乙、丙、丁,若预设的第一异步任务并发处理数量为3,则异步任务处理系统并发处理的异步任务为3个,可选的,可以根据4个异步任务进入异步任务处理系统的先后顺序确定第一异步任务并发处理数量,此时,异步任务处理系统并发处理的异步任务为甲、乙、丙。

在一些实施例中,当第一维度标签信息为第一维度的所有异步任务进入异步任务处理系统的先后时间信息。示例性的,第一维度标签信息还可以为一维异步任务的任务预计处理时间信息、各个异步任务的维度信息、异步任务的权重信息、异步任务耗费的存储信息等,本申请实施例在此不做具体限制。

可以理解的是,一级维度的限流规则为对第一维度异步任务的并发处理数量进行限流,如第一维度的异步任务包括甲、乙、丙、丁,其中甲的二维异步任务数量为A、B、C,若一级维度限流规则为第一维度的异步任务并发处理数量不能超过2,那么经过一级维度的限流规则后,甲的异步任务并发处理数量不能超过2。之后,若甲的二维异步任务进入异步任务处理系统的时间先后顺序为A、B、C,根据第一维度标签信息和一级维度的限流规则,对异步任务进行限流排序,得到的限流排序结果为A、B。对异步任务进行限流排序,得到限流排序结果。在一些实施例中,若单个用户异步任务数量过多,会影响其他用户异步任务的执行。通过实现对异步任务的限流,和异步任务的某个维度的限流,能够避免单个任务执行时间过长,影响后续任务的执行问题,同时,也能够合理分配服务资源,提高异步任务的执行效率。

在一些实施例中,根据第一异步任务并发处理数量和限流排序结果,调用异步任务消费者执行异步任务。可以理解的是,异步任务消费者受控制器的控制执行异步任务。示例性的,若一级维度的异步任务有甲、乙、丙、丁,甲对应的二级维度异步任务为A、B、C,甲对应的二级维度异步任务限流排序结果为A、B;乙对应的二级维度异步任务为D、E、F,乙对应的二级维度异步任务排序结果为D、E;丙对应的二级维度异步任务为G、H、I,丙对应的二级维度异步任务排序结果为G、H;丁对应的二级维度异步任务为J、K、L,丁对应的二级维度异步任务排序结果为J、K。若第一异步任务并发处理数量为3,根据第一维度标签信息,获取甲、乙、丙、丁进入异步任务处理系统的顺序为甲、乙、丙、丁,经过限流排序结果,此时,确定调用异步任务消费者执行的异步任务为A、B、D。在一些实施例中,若单个用户异步任务数量过多,会影响其他用户异步任务的执行。通过实现对异步任务的限流,和异步任务的某个维度的限流,能够避免单个任务执行时间过长,影响后续任务的执行问题,同时,也能够合理分配服务资源,提高异步任务的执行效率。

在一些实施例中,若异步任务执行系统监测到总异步任务数量不超过异步任务并发处理数量时,将不再按照维度的限流规则对异步任务进行限流。也即是说,对异步任务进行划分,得到各个异步任务的标签信息后,获取当前异步任务处理系统预设的异步任务并发处理数量,然后无需根据维度限流规则,直接根据维度标签信息,对异步任务进行限流排序,得到限流排序结果,然后再根据异步任务并发处理数量和限流排序结果,调用异步任务消费者执行异步任务。可以理解的是,当异步任务数量并未超过异步任务并发处理数量的时候,可以不用再对异步任务进行限流,这样,就能够节省服务器资源,减少异步任务等待的时间,提高异步任务的执行效率。

在一些实施例中,第一异步任务并发处理数量可以为异步任务处理系统执行所有异步任务的并行数量,可以理解的是,对第一异步任务并发处理数量进行限制,可以避免异步任务过多时,同时执行造成异步任务处理系统的拥堵和卡顿,影响整个异步任务处理系统的运行。

在一些实施例中,一级维度的限流规则为:具有相同或同类型第一维度标签信息的异步任务的并发处理数量不超过预设的一维任务并发处理数量。示例性的,异步任务有甲、乙、丙,若预设的一维任务并发处理数量为3,还可以理解为对异步任务的并发处理数量预设为3,则异步任务处理系统实际运行的异步任务并发处理数量不能超过3。可以理解的是,异步任务处理系统还包括多级维度的限流规则,多级维度的限流规则为具有相同或同类型第N维度标签信息的异步任务的并发处理数量不超过预设的多维任务并发处理数量,其中,N为大于等于2的正整数。

在一些实施例中,一级维度可以为地区维度、企业维度或IP地址维度等,可根据需要设定。以一级维度为企业维度为例,预设的一维任务并发处理数量不超过第一异步任务并发处理数量。在一些实施例中,单个地区维度的并发处理的异步任务数量不超过异步任务消费者执行的所有异步任务并发数量。

请参照图3,在一些实施例中,步骤S104包括但不限于步骤S201至步骤S202:

步骤S201,根据第一异步任务并发处理数量,确定需要并发执行的异步任务数量和需要存储在缓存中间件等待执行的异步任务数量;

步骤S202,根据一级维度的限流规则,若具有相同或同类型第一维度标签信息的异步任务并发处理数量超过预设的一维任务并发处理数量,则将超过的异步任务继续存储在缓存中间件中等待执行,将其他类型标签信息的异步任务加入并发执行的异步任务中,以得到限流排序结果。

示例性的,若一级维度的异步任务有甲、乙、丙、丁,甲对应的二级维度异步任务为A、B、C,甲对应的二级维度异步任务限流排序结果为A、B;乙对应的二级维度异步任务为D、E、F,乙对应的二级维度异步任务排序结果为D、E;丙对应的二级维度异步任务为G、H、I,丙对应的二级维度异步任务排序结果为G、H;丁对应的二级维度异步任务为J、K、L,丁对应的二级维度异步任务排序结果为J、K。若第一异步任务并发处理数量为3,根据第一维度标签信息,获取甲、乙、丙、丁进入异步任务处理系统的顺序为甲、乙、丙、丁,经过限流排序结果,此时,确定需要并发执行的异步任务为A、B、D。可以理解的是,此时,异步任务消费者未执行的异步任务则缓存至缓存中间件等待执行。示例性的,在本实施例中,C、E、F、G、H、I、J、K、L缓存至缓存中间件等待执行。

在一些实施例中,根据一级维度的限流规则,若具有相同或同类型第一维度标签信息的异步任务并发处理数量超过预设的一维任务并发处理数量,示例性的,若异步任务甲具有相同或同类型第一维度标签信息的异步任务为A、B、C、D,预设的一维任务并发处理数量为2,假设选定A、B加入并发执行的异步任务中,则C、D继续存储在缓存中间件中等待执行,从而得到限流排序结果。可选的,相同或同类型第一维度标签信息可以为同一维度的异步任务,或者同一类型的异步任务。

可以理解的是,将超出第一异步任务并发处理数量的异步任务放入缓存中间件中等待执行,可以避免同时执行数量过多的异步任务,超过异步任务处理系统的处理能力造成异步任务处理系统的拥堵和卡顿,影响整个异步任务处理系统的运行。

请参阅图4,在一些实施例中,异步任务处理系统还包括异步任务服务,异步任务服务用于将异步任务处理系统划分的异步任务放入缓存中间件中。在一些实施例中,异步任务处理系统根据第一异步任务并发处理数量,确定需要并发执行的异步任务数量和需要存储在缓存中间件等待执行的异步任务数量,在异步任务消费者调用异步任务并执行完毕后,异步任务服务将执行异步任务的结果返回至服务器。可以理解的是,执行结果可能是异步任务执行成功的结果,可能是异步任务执行失败的结果。可以理解的是,将超出第一异步任务并发处理数量的异步任务放入缓存中间件中等待执行,可以避免同时执行数量过多的异步任务,超过异步任务处理系统的处理能力造成异步任务处理系统的拥堵和卡顿,影响整个异步任务处理系统的运行。

请参阅图5,在一些实施例中,缓存中间件设置有队列,步骤S105之后,还包括但不限于步骤S301至步骤S302:

步骤S301,异步任务消费者检测到队列中的异步任务已执行完毕;

步骤S302,将缓存中间件中的等待中的异步任务加入队列,等待中的异步任务为已调度但未执行完成的异步任务。

在一些实施例中,异步任务消费者还能够实时监测异步任务的执行状态。当异步任务执行完毕后,异步任务消费者将执行完毕的异步任务返回至服务器的同时,向服务器发送相应的异步任务已经执行完毕的状态信息,以便服务器及时获知异步任务的执行进度。

可以理解的是,缓存中间件还设置有队列,队列用于根据异步任务的标签信息和限流规则对异步任务进行排序。在一些实施例中,等待中的异步任务为从服务器调度划分后并未执行的异步任务。在一些实施例中,在缓存中间件上设置队列,可以便于对异步任务按照要求进行排序,以及排序后异步任务消费者依照排序结果执行相应的异步任务。

请参阅图6,在一些实施例中,标签信息还包括第N维度标签信息,N为大于或者等于2的正整数;步骤S104之后,还包括但不限于步骤S401至步骤S402:

步骤S401,获取第N维度标签信息和N级维度的限流规则;

步骤S402,对异步任务更新限流排序,得到更新后的限流排序结果;N级维度的限流规则为相同或同类型第N维度标签信息的并发处理数量不超过预设的N维任务并发处理数量。

在一些实施例中,标签信息还包括第N维度标签信息,如第二维度、第三维度的标签信息,本申请实施例对此不做具体限制。在一些实施例中,第N维度的标签信息可以为对应第N维度中所有异步任务进入异步任务处理系统的先后时间信息。示例性的,第N维度标签信息还可以为N维异步任务的任务预计处理时间信息、各个异步任务的维度信息、异步任务的权重信息、异步任务耗费的存储信息等,本申请实施例在此不做具体限制。

在一些实施例中,多级维度的限流规则为具有相同或同类型第N维度标签信息的异步任务的并发处理数量不超过预设的多维任务并发处理数量。

在一些实施例中,由于N为大于等于2的正整数,在此之前,缓存中间件中还存在第一维度的限流排序结果,即根据第一维度标签信息和一级维度的限流规则,对异步任务进行限流排序,得到限流排序结果。此时,队列中加入了多级维度的异步任务进行排序,排序完毕后会对之前第一维度的限流排序结果进行更新。

示例性的,预设的维度可以指异步任务的维度。在一些实施例中,若异步任务为各个企业提供服务,那么第一维度的异步任务可以为异步处理的系统同步执行的企业任务信息,第二维度(N=2)的异步任务可以为各企业的子公司任务信息,第三维度(N=3)的异步任务可以为各子公司的部门任务信息,第四维度(N=4)的异步任务可以为各部门的小组任务信息等等。可以理解的是,对异步任务进行维度划分,可以便于异步任务处理系统根据各个维度的标签信息对异步任务进行限流,能够解决在一些应用场景中,若单个用户异步任务数量过多,影响其他用户的异步任务执行的问题。通过实现对异步任务的限流,和异步任务的某个维度的限流,从而避免了单个任务执行时间过长,影响后续任务的执行,能够合理分配服务资源,提高异步任务的执行效率。

请参阅图7,在一些实施例中,步骤S105包括但不限于步骤S501至步骤S502:

步骤S501,确定预设的执行排队策略;其中,执行排队策略包括先进先出排队策略或权重排队策略;

步骤S502,根据第一异步任务并发处理数量、限流排序结果、预设的执行排队策略,调用异步任务消费者执行异步任务。

可以理解的是,异步任务执行系统先确定预设的执行排队策略,可选的,排队策略可以根据所要执行的异步任务进行调整。可以理解的是,若排队策略仅为固定的一种,那么,就不能根据任务的缓急程度、任务的配置对排队的方式进行调整,有可能影响异步任务的执行进程。具体的,执行排队策略可以为先进先出排队策略、权重排队策略、随机排队策略、加权平均排队策略等等。

请参阅图8,在一些实施例中,步骤S105包括但不限于步骤S601至步骤S602:

步骤S601,若执行排队策略为先进先出排队,则将先进入队列中的异步任务先执行,待先进入队列中的异步任务执行完毕后,再执行后进入队列的异步任务;

步骤S602,若排队策略为权重排队,则在每次异步任务进入队列时,对队列中所有异步任务根据任务权重进行排队,先执行任务权重大的异步任务,再执行任务权重小的异步任务;或者先执行任务权重小的异步任务,再执行任务权重大的异步任务。

可以理解的是,排队策略为先进先出排队时,当异步任务进入队列之后,异步任务消费者先执行先进入队列的异步任务,再执行后加入队列的异步任务。具体的,在此过程中,在新的异步任务加入后,异步任务消费者将其作为后加入的异步任务执行。采用先进先出的排队策略对异步任务进行排队,可以确保每个异步任务按顺序执行。

在一些实施例中,可以按照任务的优先级进行异步任务的排队。这里的优先级可以指根据任务的紧急程度进行异步任务的排队,在异步任务消费者执行异步任务的过程中,若异步任务处理系统接收到服务器发送的对应异步任务需要紧急处理的信息,则将需要紧急处理的异步任务优先处理。可以理解的是,处理完需要紧急处理的异步任务之后,可按照原来采用的排队策略对异步任务进行排队执行,或者重新制定排队策略对异步任务进行排队执行。可以理解的是,按照任务的紧急程度进行异步任务的排队,可以优先执行紧急的异步任务,避免影响紧急的异步任务的处理进程。

在一些实施例中,当排队策略为权重排队时,异步任务处理系统可以按照每个异步任务的权重执行异步任务。具体的,可以根据各异步任务的权重进行排队。在一些实施例中,可以先执行任务权重大的异步任务,这里任务权重大的异步任务可以指长耗时、需要消耗大量资源,再执行任务权重小的异步任务,这里任务权重小的异步任务指执行时间较快、耗费资源较小的异步任务;或者先执行任务权重小的异步任务,再执行任务权重大的异步任务。

可以理解的是,排队策略还可以为随机排队,即当异步任务进入队列后,异步任务处理系统会控制异步任务消费者从队列中的异步任务中随机选择一个异步任务进行执行,当队列中的异步任务执行完毕,再加入新的异步任务至队列中进行随机分配,采用随机排队的排队策略。在一些实施例中,随机排队还可以在队列执行任务的同时,将新的异步任务加入队列重新进行随机分配后执行。采用随机排队的排队策略,可以保证每个异步任务执行的概率相等。

请参阅图9,在一些实施例中,步骤S105之后,还包括但不限于步骤S701至步骤S705,

步骤S701,若单个异步任务执行失败,判断是否超过重试的次数;

步骤S702,如果没有超过,调用异步任务消费者重新执行异步任务;

和/或,

步骤S703,获取预设的异步任务的预设执行时间;

步骤S704,判断各个异步任务的执行时间是否超过预设执行时间;

步骤S705,如果超过预设执行时间,则判断异步任务的执行状态为超时状态。

在一些实施例中,若单个异步任务执行失败,对执行失败的异步任务进行重新执行操作,可选的,重新执行的次数可以为2次、3次、4次等等,本申请实施例对此不做具体限制。可以理解的是,若单个异步任务重新执行的次数超过了重试次数,而此时异步任务仍然执行失败,那么,将对应的异步任务存储至缓存中间件中,再由缓存中间件返回至服务器。

在一些实施例中,若对执行失败的异步任务进行重新执行的次数并没有超过重试次数,此时,调用异步任务消费者重新执行异步任务直至对应的异步任务执行成功或重新执行的时间超过重试的次数,此时,将对应的异步任务存储至缓存中间件中,再由缓存中间件返回至服务器。

可以理解的是,在单个异步任务执行失败时,对异步任务进行重试,可以排除偶发性原因对异步任务的执行造成的影响,如网络波动等。

在一些实施例中,若单个异步任务的重试时,或者单个异步任务首次执行时,判断异步任务重试的累计时间或者单个异步任务首次执行时的时间是否超过预设的执行时间,如果超过预设执行时间,则判定异步任务的执行状态为超时状态。

可以理解的时,通过设置异步任务的预设执行时间,能够使出现故障难以执行的异步任务或者耗费过长执行时间的异步任务停止执行,以免影响其它异步任务的执行进程。在一些实施例中,超时状态的异步任务存储至缓存中间件中,再由缓存中间件返回至服务器,或者存储至缓存中间件中,等待所有异步任务执行完毕,也即是说,等待异步任务处理系统无正在处理的异步任务时,再重新执行。

请参阅图10,在一些实施例中,单个异步任务进入异步任务处理系统后,由初始状态进入缓存中间件等待执行,此时,若收到服务器发送的取消执行指令,则取消执行相应的异步任务,将对应异步任务返回至服务器。

在一些实施例中,异步任务消费者调用相关异步任务到队列中进行排队,在异步任务消费者执行任务的过程中,若异步任务执行成功,则直接将执行成功的异步任务返回至服务器中;若异步任务执行失败,判断重新执行异步任务的次数是否超过重试的次数;如果没有超过,调用异步任务消费者重新执行异步任务,直至对应的异步任务执行成功,或者,如果超过重试的次数仍然执行失败,判定对应的异步任务执行失败;或者,异步任务消费者重新执行异步任务的执行时间超过了预设执行时间仍未执行成功,则判断对应异步任务执行失败。

在一些实施例中,若单个任务的执行时间超过预设的异步任务的预设执行时间,则判断异步任务的执行状态为超时状态。

可以理解的是,将异步任务消费者执行异步任务的状态设置为完成、失败和超时,可以使异步任务处理系统实时获知异步任务的执行状态。在一些实施例中,可以对执行失败或者超时的异步任务进行编号,并将其存储至缓存中间件中,根据异步任务处理系统设置决定是否返回至服务器,这样,能够避免重复执行对应的异步任务,阻碍其它异步任务的执行。

在一些实施例中,在缓存中间件中,还设置有缓存队列,缓存队列用于暂时存放添加至队列失败或者添加至队列成功后执行失败的异步任务。设置缓存中间件,能够将异步任务在存储队列中按照执行情况进行存放,避免异步任务消费者对异步任务重复执行。在一些实施例中,缓存队列还能够对异步任务进行分类,以便服务器获知执行失败的异步任务所属的任务维度。在一些实施例中,缓存队列可以根据异步任务进入缓存队列的时间进行排序,以便异步任务消费者按照异步任务的先后顺序执行或者返回至服务器。

请参照图11,示例性的,对本申请异步任务的总体执行过程做一个介绍。

在一些实施例中,先由异步任务执行器调用异步任务消费者执行异步任务,异步任务服务将异步任务处理系统划分的异步任务放入缓存中间件中存储,其中,一部分异步任务进入队列中排序,得到排序结果后,异步任务执行器根据排队策略调用异步任务消费者执行异步任务。

参照图12,在一些实施例中,本申请提出了一种异步任务处理系统,可以实现上述异步任务处理方法,异步任务处理系统包括:

任务请求获取模块1201,用于获取服务器接收到的任务请求,任务请求包括多个待处理的异步任务;

异步任务划分模块1202,用于根据预设的维度,对异步任务进行划分,得到各个异步任务的标签信息,标签信息至少包含第一维度标签信息;

第一异步任务并发处理数量获取模块1203,用于获取预设的第一异步任务并发处理数量;

异步任务排序模块1204,用于根据第一维度标签信息和一级维度的限流规则,对异步任务进行限流排序,得到限流排序结果;

异步任务执行模块1205,用于根据第一异步任务并发处理数量和限流排序结果,调用异步任务消费者执行异步任务。

在一些实施例中,任务请求由服务器获取,控制器根据指令操作码对任务请求进行划分,可以理解的是,任务请求包括异步任务请求和非异步任务请求,异步任务指的是从主流程中剥离出来执行的任务,非异步任务指的是由主流程执行的任务。可以理解的是,异步任务执行完毕后,会返回主流程。

示例性的,异步任务一般为长耗时、需要消耗大量资源,或者容易出错的任务,若将其由主流程执行,会对其他正常耗时较短、消耗少量资源或不容易出错的任务造成影响。在一些实施例中,异步任务有多个,例如发送电子邮件或者即时消息、检查垃圾邮件、文档处理、音视频处理,图片处理、调用外部的三方服务、导入/导出大量数据等等。

示例性的,预设的维度可以指异步任务的维度。在一些实施例中,若异步任务为各个企业提供服务,那么第一维度的异步任务可以为异步处理的系统同步执行的企业任务信息,第二维度(N=2)的异步任务可以为各企业的子公司任务信息,第三维度(N=3)的异步任务可以为各子公司的部门任务信息,第四维度(N=4)的异步任务可以为各部门的小组任务信息等等。可以理解的是,对异步任务进行维度划分,可以便于异步任务处理系统根据各个维度的标签信息对异步任务进行限流,能够解决在一些应用场景中,若单个用户异步任务数量过多,影响其他用户的异步任务执行的问题。通过实现对异步任务的限流,和异步任务的某个维度的限流,从而避免了单个任务执行时间过长,影响后续任务的执行,能够合理分配服务资源,提高异步任务的执行效率。

在一些实施例中,根据预设的维度,对异步任务进行划分之后,得到各个异步任务的标签信息,可以理解的是,标签信息可以为异步任务占用的内存大小信息、异步任务存入缓存中间件的时间信息、异步任务的预计执行时间信息、异步任务的类别信息等等。在一些实施例中,标签信息至少包含第一维度标签信息,可选的,标签信息还可以包含多个维度的多个标签信息。可以理解的是,获取异步任务的标签信息,可以便于后续异步任务的调用,节约了调用时间,使得异步任务的存放更加有序,确保异步任务的高效执行。

在一些实施例中,预设的第一异步任务并发处理数量为异步任务处理系统并发处理的预设的异步任务数量。示例性的,若有4个异步任务,甲、乙、丙、丁,若预设的第一异步任务并发处理数量为3,则异步任务处理系统并发处理的异步任务为3个,可选的,可以根据4个异步任务进入异步任务处理系统的先后顺序确定第一异步任务并发处理数量,此时,异步任务处理系统并发处理的异步任务为甲、乙、丙。

在一些实施例中,当第一维度标签信息为第一维度的所有异步任务进入异步任务处理系统的先后时间信息。示例性的,第一维度标签信息还可以为一维异步任务的任务预计处理时间信息、各个异步任务的维度信息、异步任务的权重信息、异步任务耗费的存储信息等,本申请实施例在此不做具体限制。

可以理解的是,一级维度的限流规则为对第一维度异步任务的并发处理数量进行限流,如第一维度的异步任务包括甲、乙、丙、丁,其中甲的二维异步任务数量为A、B、C,若一级维度限流规则为第一维度的异步任务并发处理数量不能超过2,那么经过一级维度的限流规则后,甲的异步任务并发处理数量不能超过2。之后,若甲的二维异步任务进入异步任务处理系统的时间先后顺序为A、B、C,根据第一维度标签信息和一级维度的限流规则,对异步任务进行限流排序,得到的限流排序结果为A、B。对异步任务进行限流排序,得到限流排序结果。在一些实施例中,若单个用户异步任务数量过多,会影响其他用户异步任务的执行。通过实现对异步任务的限流,和异步任务的某个维度的限流,能够避免单个任务执行时间过长,影响后续任务的执行问题,同时,也能够合理分配服务资源,提高异步任务的执行效率。

在一些实施例中,根据第一异步任务并发处理数量和限流排序结果,调用异步任务消费者执行异步任务。可以理解的是,异步任务消费者受控制器的控制执行异步任务。示例性的,若一级维度的异步任务有甲、乙、丙、丁,甲对应的二级维度异步任务为A、B、C,甲对应的二级维度异步任务限流排序结果为A、B;乙对应的二级维度异步任务为D、E、F,乙对应的二级维度异步任务排序结果为D、E;丙对应的二级维度异步任务为G、H、I,丙对应的二级维度异步任务排序结果为G、H;丁对应的二级维度异步任务为J、K、L,丁对应的二级维度异步任务排序结果为J、K。若第一异步任务并发处理数量为3,根据第一维度标签信息,获取甲、乙、丙、丁进入异步任务处理系统的顺序为甲、乙、丙、丁,经过限流排序结果,此时,确定调用异步任务消费者执行的异步任务为A、B、D。在一些实施例中,若单个用户异步任务数量过多,会影响其他用户异步任务的执行。通过实现对异步任务的限流,和异步任务的某个维度的限流,能够避免单个任务执行时间过长,影响后续任务的执行问题,同时,也能够合理分配服务资源,提高异步任务的执行效率。

在一些实施例中,若异步任务执行系统监测到总异步任务数量不超过异步任务并发处理数量时,将不再按照维度的限流规则对异步任务进行限流。也即是说,对异步任务进行划分,得到各个异步任务的标签信息后,获取当前异步任务处理系统预设的异步任务并发处理数量,然后无需根据维度限流规则,直接根据维度标签信息,对异步任务进行限流排序,得到限流排序结果,然后再根据异步任务并发处理数量和限流排序结果,调用异步任务消费者执行异步任务。可以理解的是,当异步任务数量并未超过异步任务并发处理数量的时候,可以不用再对异步任务进行限流,这样,就能够节省服务器资源,减少异步任务等待的时间,提高异步任务的执行效率。

在一些实施例中,第一异步任务并发处理数量可以为异步任务处理系统执行所有异步任务的并行数量,可以理解的是,对第一异步任务并发处理数量进行限制,可以避免异步任务过多时,同时执行造成异步任务处理系统的拥堵和卡顿,影响整个异步任务处理系统的运行。

在一些实施例中,一级维度的限流规则为:具有相同或同类型第一维度标签信息的异步任务的并发处理数量不超过预设的一维任务并发处理数量。示例性的,异步任务有甲、乙、丙,若预设的一维任务并发处理数量为3,还可以理解为对异步任务的并发处理数量预设为3,则异步任务处理系统实际运行的异步任务并发处理数量不能超过3。可以理解的是,异步任务处理系统还包括多级维度的限流规则,多级维度的限流规则为具有相同或同类型第N维度标签信息的异步任务的并发处理数量不超过预设的多维任务并发处理数量,其中,N为大于等于2的正整数。

在一些实施例中,一级维度可以为地区维度、企业维度或IP地址维度等,可根据需要设定。以一级维度为企业维度为例,预设的一维任务并发处理数量不超过第一异步任务并发处理数量。在一些实施例中,单个地区维度的并发处理的异步任务数量不超过异步任务消费者执行的所有异步任务并发数量。

该异步任务处理系统的具体实施方式与上述异步任务处理方法的具体实施例基本相同,在此不再赘述。在满足本申请实施例要求的前提下,异步任务处理系统还可以设置其他功能模块,以实现上述实施例中的异步任务处理方法。

本申请实施例还提供了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述异步任务处理方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。

请参阅图13,图13示意了另一实施例的电子设备的硬件结构,电子设备包括:

处理器1301,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;

存储器1302,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器1302可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1302中,并由处理器1301来调用执行本申请实施例的异步任务处理方法;

输入/输出接口1303,用于实现信息输入及输出;

通信接口1304,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;

总线1305,在设备的各个组件(例如处理器1301、存储器1302、输入/输出接口1303和通信接口1304)之间传输信息;

其中处理器1301、存储器1302、输入/输出接口1303和通信接口1304通过总线1305实现彼此之间在设备内部的通信连接。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述异步任务处理方法。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。

本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。

以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。

技术分类

06120115867716