云环境中的分布式异步任务队列执行系统和方法

文档序号:7984501阅读:322来源:国知局
云环境中的分布式异步任务队列执行系统和方法
【专利摘要】本发明提出一种云环境中的分布式异步任务队列执行系统和方法,其中系统包括:接口设备,用于接收用户提交的执行任务的请求,验证用户的配额是否超限并且在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库;任务队列设备,用于判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列;以及多个任务执行设备,用于执行任务队列设备推送的并行任务和串行任务,其中任务执行设备推送的是并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。本发明的任务执行效率高,性能好。
【专利说明】云环境中的分布式异步任务队列执行系统和方法
【技术领域】
[0001]本发明涉及互联网【技术领域】,尤其涉及一种云环境中的分布式异步任务队列执行系统和方法。
【背景技术】
[0002]在代理云环境中,用户(如开发者)经常需要执行自己的任务,由于受到执行引擎的时间限制,同步执行多个任务会造成任务执行超时,因此支持异步提交任务队列对于用户来说就显得十分重要,分布式任务队列支持用户通过队列提交一系列任务,由系统保证任务不被丢失。
[0003]目前,采用分布式任务队列执行任务主要存在以下问题:任务执行器采用主动拉取模式,在出现大规模队列的情况下容易造成扫描代价高,影响系统的整体性能,同时部分需求不能支持,例如成功回调、对单个任务状态的查询。

【发明内容】

[0004]本发明旨在至少解决上述技术问题之一。
[0005]为此,本发明的一个目的在于提出一种云环境中的分布式异步任务队列执行系统,该系统任务执行效率高,性能好。
[0006]本发明的另一目的在于提出一种云环境中的分布式异步任务队列执行方法。
[0007]为了实现上述目的,根据本发明第一方面的实施例的云环境中的分布式异步任务队列执行系统包括:接口设备,所述接口设备用于接收用户提交的执行任务的请求,验证所述用户的配额是否超限并且在所述用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库;任务队列设备,所述任务队列设备用于判断所述用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将所述用户提交的任务相应地放入并行任务队列和串行任务队列;以及多个任务执行设备,所述多个任务执行设备用于执行所述任务队列设备推送的并行任务和串行任务,其中所述任务队列设备推送的是并行任务时,判断并发度是否超过所述用户的限制,在并发度没有超过所述用户的限制的情况下执行所述并行任务。
[0008]根据本发明实施例的云环境中的分布式异步任务队列执行系统,通过任务队列设备实现异步任务队列的任务推送并通过任务执行设备执行任务,满足用户期望,提高任务执行效率,特别是在大规模任务队列的情况下,可以保证任务的及时执行,同时大幅提升系统性能。
[0009]为了实现上述目的,根据本发明第二方面的实施例的云环境中的分布式异步任务队列执行方法包括以下步骤:接收用户提交的执行任务的请求;验证所述用户的配额是否超限;在所述用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库;判断所述用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将所述用户提交的任务相应地放入并行任务队列和串行任务队列;以及使用多个任务执行设备执行所述并行任务和所述串行任务,其中在执行所述并行任务时,判断并发度是否超过所述用户的限制,在并发度没有超过所述用户的限制的情况下执行所述并行任务。
[0010]根据本发明实施例的云环境中的分布式异步任务队列执行方法,通过多个任务执行设备执行分类的并行任务和串行任务,满足用户期望,提高任务执行效率,特别是在大规模任务队列的情况下,可以保证任务的及时执行,同时大幅提升系统性能。
[0011]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【专利附图】

【附图说明】
[0012]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
[0013]图1是根据本发明一个实施例的云环境中的分布式异步任务队列执行系统的结构框图;
[0014]图2是根据本发明一个实施例的云环境中的分布式异步任务队列执行系统的结构框图;
[0015]图3是根据本发明一个实施例的云环境中的分布式异步任务队列执行系统的结构框图;
[0016]图4是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图;
[0017]图5是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图;
[0018]图6是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图;以及
[0019]图7是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图。
【具体实施方式】
[0020]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0021]在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0022]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0023]下面参考附图描述根据本发明实施例的云环境中的分布式异步任务队列执行系统和方法。
[0024]一种云环境中的分布式异步任务队列执行系统,包括:接口设备,接口设备用于接收用户提交的执行任务的请求,验证用户的配额是否超限并且在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库;任务队列设备,任务队列设备用于判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列;以及多个任务执行设备,多个任务执行设备用于执行任务队列设备推送的并行任务和串行任务,其中任务执行设备推送的是并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。
[0025]图1是根据本发明一个实施例的云环境中的分布式异步任务队列执行系统的结构框图。
[0026]如图1所示,云环境中的分布式异步任务队列执行系统包括:接口设备10、任务队列设备20和多个任务执行设备30。
[0027]具体地,接口设备10用于接收用户提交的执行任务的请求,验证用户的配额是否超限并且在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。更具体地,接口设备10可以是对外提供的http openapi (OpenApplicationProgramming Interface,开放的应用程序编程接口),并可以将其封装为多语言版本的sdk (Software Development Kit,软件开发工具包)便于用户使用,用户通过云代理提供的管理界面和sdk可以完成任务的提交。其中,接口设备10通过判断用户的配额是否超限可以对任务执行量较大的用户进行限制,提高执行效率。
[0028]其中,在用户提交的任务通过接口设备10各种验证之后将对应的任务基本信息写入数据库。在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0029]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0030]任务队列设备20用于判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0031]多个任务执行设备30用于执行任务队列设备20推送的并行任务和串行任务,其中任务队列设备20推送的是并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务,如果并发度超过用户的限制则拒绝执行所推送的任务。[0032]根据本发明实施例的云环境中的分布式异步任务队列执行系统,通过任务队列设备实现异步任务队列的任务推送并通过任务执行设备执行任务,满足用户期望,提高任务执行效率,特别是在大规模任务队列的情况下,可以保证任务的及时执行,同时大幅提升系统性能。
[0033]在本发明的一个实施例中,任务执行设备30通过读取并行任务队列中正在执行的任务数来判断任务数是否达到用户的限制,如果是,则拒绝接受并行任务队列中的新任务直到并行任务队列中有任务被执行完。更具体地,任务队列设备20推送任务到某个任务执行设备30后,任务执行设备30读取当前任务队列中正在执行的任务数目,如果正在执行的任务数目达到上限值则拒绝接受该新推送的任务,只到该任务队列中的某个或者几个任务完成时,通知任务队列设备20推送一个或者几个新任务。由此实现并发度的控制。
[0034]在本发明的一个实施例中,任务执行设备30通知数据库将正在执行的任务的状态修改为“进行中”同时标记执行正在执行的任务执行设备30。具体地,当任务执行设备30接收到任务队列设备20推送的任务之后,将数据库中对应的任务基本信息改为“进行中”,同时标记执行该任务的任务执行设备30的编号,由此,在任务执行设备30重启之后,可以检查到自己曾经未完成的任务并继续重试,保证任务不被丢失。
[0035]在本发明的一个实施例中,接口设备10进一步用于验证用户的身份,由此保证安全性。进一步地,接口设备10还用于对系统进行防攻击保护以及对用户提交的执行任务的请求和任务所对应的参数进行校验。
[0036]图2是根据本发明一个实施例的云环境中的分布式异步任务队列执行系统的结构框图。
[0037]如图2所示,云环境中的分布式异步任务队列执行系统包括:接口设备10、任务队列设备20、多个任务执行设备30和任务统计设备40。
[0038]具体地,具体地,接口设备10用于接收用户提交的执行任务的请求,验证用户的配额是否超限并且在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。更具体地,接口设备10可以是对外提供的http openapi,并可以将其封装为多语言版本的sdk便于用户使用,用户通过云代理提供的管理界面和sdk可以完成任务的提交。其中,接口设备10通过判断用户的配额是否超限可以对任务执行量较大的用户进行限制,提闻执行效率。
[0039]其中,在用户提交的任务通过接口设备10各种验证之后将对应的任务基本信息写入数据库。在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0040]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0041]任务队列设备20用于判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0042]多个任务执行设备30用于执行任务队列设备20推送的并行任务和串行任务,其中任务队列设备20推送的是并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务,如果并发度超过用户的限制则拒绝执行所推送的任务。
[0043]任务统计设备40用于统计任务信息以及多个任务执行设备30的信息,任务统计设备40还可以统计任务队列信息,例如名称和长度上限等。更具体地,任务信息包括任务的状态、任务的内容以及执行任务的任务执行设备30的编号,多个任务执行设备30的信息包括多个任务执行设备30的编号以及上次启动时间。任务的状态包括等待、执行、成功、失败、取消。任务执行设备40是无状态的。
[0044]根据本发明实施例的云环境中的分布式异步任务队列执行系统,通过任务统计设备实现信息统计,方便查询、控制,例如可以查询某个任务的状态。
[0045]图3是根据本发明一个实施例的云环境中的分布式异步任务队列执行系统的结构框图。
[0046]如图3所示,云环境中的分布式异步任务队列执行系统包括:接口设备10、任务队列设备20、多个任务执行设备30、任务统计设备40和反馈设备50。
[0047]具体地,具体地,接口设备10用于接收用户提交的执行任务的请求,验证用户的配额是否超限并且在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。更具体地,接口设备10可以是对外提供的http openapi,并可以将其封装为多语言版本的sdk便于用户使用,用户通过云代理提供的管理界面和sdk可以完成任务的提交。其中,接口设备10通过判断用户的配额是否超限可以对任务执行量较大的用户进行限制,提闻执行效率。
[0048]其中,在用户提交的任务通过接口设备10各种验证之后将对应的任务基本信息写入数据库。在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0049]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0050]任务队列设备20用于判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0051]多个任务执行设备30用于执行任务队列设备20推送的并行任务和串行任务,其中任务队列设备20推送的是并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务,如果并发度超过用户的限制则拒绝执行所推送的任务。
[0052]任务统计设备40用于统计任务信息以及多个任务执行设备30的信息,任务统计设备40还可以统计任务队列信息,例如名称和长度上限等。更具体地,任务信息包括任务的状态、任务的内容以及执行任务的任务执行设备30的编号,多个任务执行设备30的信息包括多个任务执行设备30的编号以及上次启动时间。任务的状态包括等待、执行、成功、失败、取消。任务执行设备40是无状态的。[0053]反馈设备50用于将用户消耗的资源返回接口设备10。
[0054]在本发明的一个实施例中,任务统计设备40是可选的。
[0055]根据本发明实施例的云环境中的分布式异步任务队列执行系统,通过对用户消耗的资源进行反馈用于验证用户的配额,便于系统部署。
[0056]为了实现上述实施例,本发明还提出一种云环境中的分布式异步任务队列执行方法。
[0057]一种云环境中的分布式异步任务队列执行方法,包括以下步骤:接收用户提交的执行任务的请求;验证用户的配额是否超限;在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库;判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列;以及使用多个任务执行设备执行并行任务和串行任务,其中在执行并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。
[0058]图4是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图。
[0059]如图4所示,云环境中的分布式异步任务队列执行方法,包括下述步骤。
[0060]步骤S101,接收用户提交的执行任务的请求。
[0061]具体地,用户可以通过http openapi封装成的多语言版本sdk提交执行任务的请求。
[0062]步骤S102,验证用户的配额是否超限。
[0063]其中,通过验证用户的配额是否超限可以对任务执行量较大的用户进行限制,提高执行效率。
[0064]步骤S103,在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。其中,用户可以通过sdk提交任务。
[0065]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0066]在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0067]步骤S104,判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0068]步骤S105,使用多个任务执行设备执行并行任务和串行任务,其中在执行并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。其中,如果并发度超过用户的限制则拒绝执行。
[0069]在本发明的一个实施例中,任务执行设备通过读取并行任务队列中正在执行的任务数来判断任务数是否达到用户的限制,如果是,则拒绝接受所述并行任务队列中的新任务直到并行任务队列中有任务被执行完,由此实现并发度的控制。
[0070]在本发明的一个实施例中,任务执行设备通知数据库将正在执行的任务的状态修改为“进行中”同时标记执行正在执行的任务执行设备。具体地,当任务执行设备接收任务之后,将数据库中对应的任务基本信息改为“进行中”,同时标记执行该任务的任务执行设备的编号,由此,在任务执行设备重启之后,可以检查到自己曾经未完成的任务并继续重试,保证任务不被丢失。
[0071]根据本发明实施例的云环境中的分布式异步任务队列执行方法,通过多个任务执行设备执行分类的并行任务和串行任务,满足用户期望,提高任务执行效率,特别是在大规模任务队列的情况下,可以保证任务的及时执行,同时大幅提升系统性能。
[0072]图5是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图。
[0073]如图5所示,云环境中的分布式异步任务队列执行方法,包括下述步骤。
[0074]步骤S201,接收用户提交的执行任务的请求。
[0075]具体地,用户可以通过http openapi封装成的多语言版本sdk提交执行任务的请求。
[0076]步骤S202,验证用户的配额是否超限。
[0077]其中,通过验证用户的配额是否超限可以对任务执行量较大的用户进行限制,提高执行效率。
[0078]步骤S203,在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。其中,用户可以通过sdk提交任务。
[0079]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0080]在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0081]步骤S204,判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0082]步骤S205,使用多个任务执行设备执行并行任务和串行任务,其中在执行并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。其中,如果并发度超过用户的限制则拒绝执行。
[0083]步骤S206,统计任务信息以及多个任务执行设备的信息。
[0084]具体地,任务信息包括任务的状态、任务的内容以及执行任务的任务执行设备的编号,多个任务执行设备的信息包括多个任务执行设备的编号以及上次启动时间。还可以统计任务队列信息,例如名称和长度上限等。任务的状态包括等待、执行、成功、失败、取消。任务执行设备40是无状态的。
[0085]在本发明的一个实施例中,任务执行设备通过读取并行任务队列中正在执行的任务数来判断任务数是否达到用户的限制,如果是,则拒绝接受所述并行任务队列中的新任务直到并行任务队列中有任务被执行完,由此实现并发度的控制。
[0086]在本发明的一个实施例中,任务执行设备通知数据库将正在执行的任务的状态修改为“进行中”同时标记执行正在执行的任务执行设备。具体地,当任务执行设备接收任务之后,将数据库中对应的任务基本信息改为“进行中”,同时标记执行该任务的任务执行设备的编号,由此,在任务执行设备重启之后,可以检查到自己曾经未完成的任务并继续重试,保证任务不被丢失。
[0087]根据本发明实施例的云环境中的分布式异步任务队列执行方法,通过信息统计,可以方便查询、控制,例如可以查询某个任务的状态。
[0088]图6是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图。
[0089]如图6所示,云环境中的分布式异步任务队列执行方法,包括下述步骤。
[0090]步骤S301,接收用户提交的执行任务的请求。
[0091]具体地,用户可以通过http openapi封装成的多语言版本sdk提交执行任务的请求。
[0092]步骤S302,验证用户的配额是否超限。
[0093]其中,通过验证用户的配额是否超限可以对任务执行量较大的用户进行限制,提高执行效率。
[0094]步骤S303,在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。其中,用户可以通过sdk提交任务。
[0095]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0096]在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0097]步骤S304,判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0098]步骤S305,使用多个任务执行设备执行并行任务和串行任务,其中在执行并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。其中,如果并发度超过用户的限制则拒绝执行。
[0099]步骤S306,统计任务信息以及多个任务执行设备的信息。
[0100]具体地,任务信息包括任务的状态、任务的内容以及执行任务的任务执行设备的编号,多个任务执行设备的信息包括多个任务执行设备的编号以及上次启动时间。还可以统计任务队列信息,例如名称和长度上限等。任务的状态包括等待、执行、成功、失败、取消。任务执行设备40是无状态的。
[0101]步骤S307,将用户消耗的资源返回用于判断用户的配额是否超限。
[0102]在本发明的一个实施例中,任务执行设备通过读取并行任务队列中正在执行的任务数来判断任务数是否达到用户的限制,如果是,则拒绝接受所述并行任务队列中的新任务直到并行任务队列中有任务被执行完,由此实现并发度的控制。
[0103]在本发明的一个实施例中,任务执行设备通知数据库将正在执行的任务的状态修改为“进行中”同时标记执行正在执行的任务执行设备。具体地,当任务执行设备接收任务之后,将数据库中对应的任务基本信息改为“进行中”,同时标记执行该任务的任务执行设备的编号,由此,在任务执行设备重启之后,可以检查到自己曾经未完成的任务并继续重试,保证任务不被丢失。
[0104]根据本发明实施例的云环境中的分布式异步任务队列执行方法,通过对用户消耗的资源进行反馈用于验证用户的配额,便于系统部署。
[0105]图7是根据本发明一个实施例的云环境中的分布式异步任务队列执行方法的流程图。
[0106]如图7所示,云环境中的分布式异步任务队列执行方法,包括下述步骤。
[0107]步骤S401,接收用户提交的执行任务的请求。
[0108]具体地,用户可以通过http openapi封装成的多语言版本sdk提交执行任务的请求。
[0109]步骤S402,验证用户的身份。
[0110]步骤S403,验证用户的配额是否超限。
[0111]其中,通过验证用户的配额是否超限可以对任务执行量较大的用户进行限制,提高执行效率。
[0112]步骤S404,在用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库。其中,用户可以通过sdk提交任务。
[0113]在本发明的一个实施例中,用户提交的任务包括提取网页任务或离线下载任务。例如,如果是网页任务,则用户可以将任务代码挂接在云环境中,通过http请求访问,由此实现很好的解耦,通过访问网页可以触发用户的任务代码;如果是离线下载任务,用户可以将其他站点中属于自己的资源离线转移到云环境中,方便用户将建站资源部署在云环境中。
[0114]在本发明的一个实施例中,任务基本信息包括任务的状态,例如,任务的状态可以包括等待执行、执行中和执行结束等。
[0115]步骤S405,判断用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将用户提交的任务相应地放入并行任务队列和串行任务队列。
[0116]步骤S406,使用多个任务执行设备执行并行任务和串行任务,其中在执行并行任务时,判断并发度是否超过用户的限制,在并发度没有超过用户的限制的情况下执行并行任务。其中,如果并发度超过用户的限制则拒绝执行。
[0117]步骤S407,统计任务信息以及多个任务执行设备的信息。
[0118]具体地,任务信息包括任务的状态、任务的内容以及执行任务的任务执行设备的编号,多个任务执行设备的信息包括多个任务执行设备的编号以及上次启动时间。还可以统计任务队列信息,例如名称和长度上限等。任务的状态包括等待、执行、成功、失败、取消。任务执行设备40是无状态的。
[0119]步骤S408,将用户消耗的资源返回用于判断用户的配额是否超限。
[0120]在本发明的一个实施例中,任务执行设备通过读取并行任务队列中正在执行的任务数来判断任务数是否达到用户的限制,如果是,则拒绝接受所述并行任务队列中的新任务直到并行任务队列中有任务被执行完,由此实现并发度的控制。[0121]在本发明的一个实施例中,任务执行设备通知数据库将正在执行的任务的状态修改为“进行中”同时标记执行正在执行的任务执行设备。具体地,当任务执行设备接收任务之后,将数据库中对应的任务基本信息改为“进行中”,同时标记执行该任务的任务执行设备的编号,由此,在任务执行设备重启之后,可以检查到自己曾经未完成的任务并继续重试,保证任务不被丢失。
[0122]根据本发明实施例的云环境中的分布式异步任务队列执行方法,通过用户的身份验证保证安全性。
[0123]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0124]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0125]尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
【权利要求】
1.一种云环境中的分布式异步任务队列执行系统,其特征在于,包括: 接口设备,所述接口设备用于接收用户提交的执行任务的请求,验证所述用户的配额是否超限并且在所述用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库; 任务队列设备,所述任务队列设备用于判断所述用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将所述用户提交的任务相应地放入并行任务队列和串行任务队列;以及 多个任务执行设备,所述多个任务执行设备用于执行所述任务队列设备推送的并行任务和串行任务,其中所述任务队列设备推送的是并行任务时,判断并发度是否超过所述用户的限制,在并发度没有超过所述用户的限制的情况下执行所述并行任务。
2.根据权利要求1所述的系统,其特征在于,进一步包括: 任务统计设备,所述任务统计设备用于统计任务信息以及所述多个任务执行设备的信息。
3.根据权利要求2所述的系统,其特征在于,所述任务基本信息包括所述任务的状态,所述任务信息包括所述任务的状态、所述任务的内容以及执行所述任务的任务执行设备的编号,所述多个任务执行设备的信息包括所述多个任务执行设备的编号以及上次启动时间。
4.根据权利要求3所述的系统,其特征在于,所述任务的状态包括:等待、执行、成功、失败、取消。
5.根据权利要求1至4中任一项所述的系统,其特征在于,进一步包括: 反馈设备,所述反馈设备用于将所述用户消耗的资源返回所述接口设备。
6.根据权利要求1至4中任一项所述的系统,其特征在于,所述任务执行设备通过读取所述并行任务队列中正在执行的任务数来判断所述任务数是否达到所述用户的限制,如果是,则拒绝接受所述并行任务队列中的新任务直到所述并行任务队列中有任务被执行完。
7.根据权利要求1至4中任一项所述的系统,其特征在于,所述任务执行设备通知所述数据库将正在执行的任务的状态修改为“进行中”同时标记执行所述正在执行的任务执行设备。
8.根据权利要求1至4中任一项所述的系统,其特征在于,所述用户提交的任务包括提取网页任务或离线下载任务。
9.根据权利要求1至4中任一项所述的系统,其特征在于,所述接口设备进一步用于验证所述用户的身份。
10.根据权利要求1至4中任一项所述的系统,其特征在于,所述多个任务执行设备是无状态的。
11.一种云环境中的分布式异步任务队列执行方法,其特征在于,包括: 接收用户提交的执行任务的请求; 验证所述用户的配额是否超限; 在所述用户的配额没有超限的情况下接收用户提交的任务并将任务基本信息写入数据库; 判断所述用户提交的任务是需要并行执行的任务还是需要串行执行的任务并将所述用户提交的任务相应地放入并行任务队列和串行任务队列;以及 使用多个任务执行设备执行所述并行任务和所述串行任务,其中在执行所述并行任务时,判断并发度是否超过所述用户的限制,在并发度没有超过所述用户的限制的情况下执行所述并行任务。
12.根据权利要求11所述的方法,其特征在于,进一步包括: 统计任务信息以及所述多个任务执行设备的信息。
13.根据权利要求12所述的方法,其特征在于,所述任务基本信息包括所述任务的状态,所述任务信息包括所述任务的状态、所述任务的内容以及执行所述任务的任务执行设备的编号,所述多个执行设备的信息包括所述多个执行设备的编号以及上次启动时间。
14.根据权利要求13所述的方法,其特征在于,所述任务的状态包括:等待、执行、成功、失败、取消。
15.根据权利要求11至14中任一项所述的方法,其特征在于,进一步包括步骤: 将所述用户消耗的资源返回用于判断所述用户的配额是否超限。
16.根据权利要求11至14中任一项所述的方法,其特征在于,所述任务执行设备通过读取所述并行任务队列中正在执行的任务数来判断所述任务数是否达到所述用户的限制,如果是,则拒绝接受所述并行任务队列中的新任务直到所述并行任务队列中有任务被执行完。
17.根据权利要求11至14中任一项所述的方法,其特征在于,所述任务执行设备通知所述数据库将正在执行的任务的状态修改为“进行中”同时标记执行所述正在执行的任务执行设备。`
18.根据权利要求11至14中任一项所述的方法,其特征在于,所述用户提交的任务包括提取网页任务或离线下载任务。
19.根据权利要求11至14中任一项所述的方法,其特征在于,进一步包括步骤: 验证所述用户的身份。
20.根据权利要求11至14中任一项所述的方法,其特征在于,所述多个任务执行设备是无状态的。
【文档编号】H04L29/08GK103780635SQ201210395517
【公开日】2014年5月7日 申请日期:2012年10月17日 优先权日:2012年10月17日
【发明者】高巍, 翁岩青, 何磊, 李彬孟 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1