一种计算任务处理方法和系统的制作方法

文档序号:10724668阅读:498来源:国知局
一种计算任务处理方法和系统的制作方法
【专利摘要】本发明公开了一种计算任务处理方法和系统,所述方法包括:工作模块获取待处理的计算任务,工作模块部署在云存储系统中的存储设备上的;工作模块通过复用所在存储设备上的计算资源,完成对计算任务的处理。应用本发明所述方案,能够降低对资源和成本的消耗等。
【专利说明】
一种计算任务处理方法和系统
【技术领域】
[0001]本发明涉及计算机应用技术,特别涉及一种计算任务处理方法和系统。
【【背景技术】】
[0002]云存储系统上存储了大量的用户视频、图片等文件,随着产品的不断发展演进,需要提供大量的计算能力来对用户的文件进行处理,如视频转码、文件解压、图片信息提取等。
[0003]现有技术中,通常采用搭建物理计算集群的方式来提供上述计算能力,以视频转码为例,需要开发一套视频转码专用的框架,按照预期的视频转码规模,建设数量在几百到几千的物理设备集群用于运算,而这需要耗费巨大的资源和成本。

【发明内容】

[0004]本发明提供了一种计算任务处理方法和系统,能够降低对资源和成本的消耗等。
[0005]具体技术方案如下:
[0006]一种计算任务处理方法,包括:
[0007]工作模块获取待处理的计算任务,所述工作模块部署在云存储系统中的存储设备上的;
[0008]所述工作模块通过复用所在存储设备上的计算资源,完成对所述计算任务的处理。
[0009]根据本发明一优选实施例,所述计算任务包括:离线任务、在线任务以及实时任务。
[0010]根据本发明一优选实施例,所述工作模块获取待处理的计算任务包括:
[0011 ]所述工作模块拉取离线任务;
[0012]所述工作模块接收发送来的在线任务或实时任务。
[0013]根据本发明一优选实施例,所述工作模块拉取离线任务包括:
[0014]所述工作模块在每次拉取离线任务之前,向调度模块发送调度请求,并接收所述调度模块返回的调度指令,从消息中间件中拉取所述调度指令中携带的离线业务标识对应的离线任务,所述消息中间件中的离线任务为所述前端模块接收到后发送到所述消息中间件中的。
[0015]根据本发明一优选实施例,所述工作模块接收发送来的在线任务或实时任务包括:
[0016]所述工作模块接收所述前端模块针对接收到的在线任务或实时任务向调度模块发出调度请求后,根据所述调度模块返回的调度指令中携带的工作模块标识发送来的在线任务或实时任务。
[0017]根据本发明一优选实施例,所述完成对所述计算任务的处理包括:
[0018]当所述计算任务为离线任务或在线任务时,所述工作模块调起所述计算任务对应的业务进程,完成对所述计算任务的处理;
[0019]当所述计算任务为实时任务时,所述工作模块使用自身线程,完成对所述计算任务的处理。
[0020]根据本发明一优选实施例,该方法进一步包括:
[0021]在处理所述计算任务之前,所述工作模块将所述计算任务发送给代理模块,以便所述代理模块对所述计算任务进行保存,且若在超过预定时长之前接收到所述工作模块发送来的任务完成通知,则删除所述计算任务,否则,转由其它工作模块对所述计算任务进行处理。
[0022]一种计算任务处理系统,包括:工作模块;
[0023]所述工作模块部署在云存储系统中的存储设备上,
[0024]所述工作模块,用于获取待处理的计算任务,并通过复用所在存储设备上的计算资源,完成对所述计算任务的处理。
[0025]根据本发明一优选实施例,所述计算任务包括:离线任务、在线任务以及实时任务。
[0026]根据本发明一优选实施例,所述工作模块拉取离线任务;
[0027]所述工作模块接收发送来的在线任务或实时任务。
[0028]根据本发明一优选实施例,所述系统中进一步包括:调度模块和前端模块;
[0029]所述工作模块在每次拉取离线任务之前,向所述调度模块发送调度请求,接收所述调度模块返回的调度指令,从消息中间件中拉取所述调度指令中携带的离线业务标识对应的离线任务;
[0030]所述调度模块,用于当接收到来自所述工作模块的调度请求后,向所述工作模块返回携带有需要拉取的离线业务标识的调度指令;
[0031 ]所述前端模块,用于将接收到的离线任务发送到所述消息中间件中。
[0032]根据本发明一优选实施例,所述前端模块进一步用于,当接收到在线任务或实时任务时,向所述调度模块发送调度请求,将所述在线任务或实时任务发送给所述调度模块返回的调度指令中携带的工作模块标识对应的工作模块;
[0033]所述调度模块进一步用于,当接收到来自所述前端模块的调度请求后,向所述前端模块返回携带有负责处理任务的工作模块标识的调度指令。
[0034]根据本发明一优选实施例,当所述计算任务为离线任务或在线任务时,所述工作模块调起所述计算任务对应的业务进程,完成对所述计算任务的处理;
[0035]当所述计算任务为实时任务时,所述工作模块使用自身线程,完成对所述计算任务的处理。
[0036]根据本发明一优选实施例,所述系统中进一步包括:代理模块;
[0037]所述工作模块进一步用于,在处理所述计算任务之前,将所述计算任务发送给所述代理模块,并在任务处理完成后通知所述代理模块;
[0038]所述代理模块,用于对所述计算任务进行保存,且若在超过预定时长之前接收到所述工作模块发送来的任务完成通知,则删除所述计算任务,否则,转由其它工作模块对所述计算任务进行处理。
[0039]通过以上介绍可以看出,采用本发明所述方案,在存储设备上部署工作模块,工作模块可通过复用存储设备上闲置的计算资源,完成对计算任务的处理,从而以近乎零成本的方式获取到了大量的计算能力,相比于现有技术,无需再专门搭建物理计算集群,进而极大地降低了对资源和成本的消耗,并提高了存储设备的资源利用率。
【【附图说明】】
[0040]图1为本发明计算任务处理方法实施例的流程图。
[0041 ]图2为本发明计算任务处理系统实施例的组成结构示意图。
【【具体实施方式】】
[0042]云存储系统为了存储用户文件,拥有数量庞大的存储设备集群,由于主要用于存储文件,因此这些存储设备的共同特点是磁盘占用比较高,但计算资源如中央处理单元(CPU,Central Processing Unit)等存在大量空闲,从而造成了计算资源的巨大浪费。
[0043]为此,本发明中提出一种计算任务处理系统,或称为mammoth系统,其中可包括:工作模块(mammoth worker)、调度模块(mammoth observer)和前端模块(mommoth front)等,通过各模块之间的相互配合,完成任务接入、任务调度和任务计算等各种处理。
[0044]其中,前端模块主要负责任务接入,调度模块主要负责任务调度,工作模块主要负责任务处理(任务计算)。
[0045]工作模块部署在云存储系统中的存储设备上,可利用存储设备上闲置的计算资源来对计算任务进行处理,从而无需再专门搭建物理计算集群,进而极大地降低了对资源和成本的消耗,并提高了存储设备的资源利用率。
[0046]为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
[0047]实施例一
[0048]图1为本发明计算任务处理方法实施例的流程图,如图1所示,包括以下具体实现方式。
[0049]在11中,工作模块获取待处理的计算任务,工作模块部署在云存储系统中的存储设备上的。
[0050]为了利用存储设备上闲置的计算资源,可在存储设备上部署工作模块,每个存储设备上只需部署一个工作模块即可。
[0051]所述计算任务可包括:离线任务、在线任务和实时任务。
[0052]根据任务类型的不同,工作模块获取计算任务的方式也会不同,如下所示:
[0053]I)工作模块拉取离线任务
[0054]工作模块在每次拉取离线任务之前,向调度模块发送调度请求,并接收调度模块返回的调度指令,从消息中间件中拉取调度指令中携带的离线业务标识对应的离线任务,消息中间件中的离线任务为前端模块接收到后发送到消息中间件中的;
[0055]2)工作模块接收发送来的在线任务或实时任务
[0056]工作模块接收前端模块针对接收到的在线任务或实时任务向调度模块发出调度请求后,根据调度模块返回的调度指令中携带的工作模块标识发送来的在线任务或实时任务。
[0057]前端模块负责任务接入,通过与用户进行交互,获取用户发布的各类型任务。调度模块是mammoth系统中的调度组件,负责整个系统的任务调度。
[0058]前端模块在接收到一个在线任务或实时任务后,可向调度模块发送调度请求,询问调度模块负责处理该任务的是哪个工作模块,调度模块接收到来自前端模块的调度请求后,会从众多的工作模块中选出一个负责处理该任务,并将选出的工作模块标识携带在调度指令中返回给前端模块,进而由前端模块将该任务发送给所选出的工作模块进行处理。
[0059]前端模块可将接收到的离线任务发送到消息中间件中。每个工作模块在每次拉取离线任务之前,都会向调度模块发送调度请求,询问调度模块本次需要拉取哪个离线业务的任务,调度模块接收到来自工作模块的调度请求后,会按照调度规则,向工作模块返回携带有离线业务标识的调度指令,通过这种方式来通知工作模块去拉取哪个离线业务的任务。
[0060]调度模块作为调度组件,需要同时满足离线调度和在线调度的各种特性。在线调度的特性可包括:提供可用的工作模块,保证各个工作模块之间的负载均衡等。离线调度的特性可包括:控制各工作模块拉取各个离线业务的任务数量和速度,保护工作模块的安全和执彳丁效率,防止过尚压力等。
[0061]另外,每个工作模块均可处理所有离线业务的任务,根据调度模块的调度,可以对多个离线业务进行计算资源和时间的分配,即在计算资源有限的情况下在各个离线业务之间调配计算资源,并需要保证计算服务不会对工作模块所在存储设备上原有的存储服务造成影响。
[0062]调度模块具体如何进行调度不作限制,可根据实际需要而定。
[0063]在12中,工作模块通过复用所在存储设备上的计算资源,完成对计算任务的处理。
[0064]本实施例中,计算任务可以消息的形式进行传递,消息传递流程对业务透明,这可以大大简化业务开发的复杂度和学习成本,借此可以实现快速的业务开发和接入。
[0065]对于不同类型的计算任务,可采用不同的传递和处理方式,如下所示:
[0066]I)离线任务
[0067]通过消息中间件传递消息;
[0068]调起离线任务对应的业务进程完成任务处理;
[0069]2)在线任务
[0070]通过远程过程调用协议(RPC,Remote Procedure Call Protocol)传递消息;
[0071 ]调起在线任务对应的业务进程完成任务处理;
[0072]3)实时任务
[0073]通过RPC协议传递消息;
[0074]工作模块使用自身线程完成任务处理。
[0075]通常来说,离线任务对实时性要求较低,但对吞吐率要求较高,在线任务对实时性要求较高,但对吞吐率要求较低,实时任务对实时性要求较高,且多要求同步返回处理结果O
[0076]用户可根据自身业务的计算特点等,选取合适的计算模式,即离线模式、在线模式或实时模式,对应的任务则分别为离线任务、在线任务或实时任务。
[0077]在实际应用中,除工作模块、调度模块和前端模块外,mammoth系统中还可进一步包括代理模块(mammoth agent)。
[0078]工作模块在每处理一个计算任务之前,可将该计算任务发送给代理模块,以便代理模块对该计算任务进行保存,且若在超过预定时长之前接收到工作模块发送来的任务完成通知,则删除该计算任务,否则,转由其它工作模块对该计算任务进行处理。
[0079]代理模块在接收到该计算任务后,可开始计时,如果在达到预定时长如5分钟之前,接收到工作模块发送来的任务完成通知,则可删除该计算任务,如果由于工作模块出现故障等原因,在达到预定时长之前未接收到任务完成通知,则可转由其它工作模块对该计算任务进行处理,如可在调度模块的调度下,由其它工作模块从代理模块中拉取该计算任务并完成处理。
[0080]通过上述方式,可使得任务不会丢失,尽可能地确保每个任务均被正确处理。所述预定时长的具体取值可根据实际需要而定。
[0081]以上是关于本发明方法实施例的介绍,以下对本发明系统实施例进行进一步介绍。
[0082]实施例二
[0083]图2为本发明计算任务处理系统实施例的组成结构示意图,如图2所示,包括:工作模块21,另外还可进一步包括:调度模块22、前端模块23和代理模块24等,通过各模块之间的相互配合,完成任务接入、任务调度和任务计算等各种处理。
[0084]通常来说,工作模块21、调度模块22、前端模块23和代理模块24的个数均为多个,为简化附图,图2中分别只表示出了一个。
[0085]另外,工作模块21、调度模块22和代理模块24均可部署在云存储系统中的存储设备上。也就是说,对于每个存储设备来说,可在上面部署工作模块21、调度模块22或代理模块24中的一个。
[0086]调度模块22的个数通常远少于工作模块21的个数,每个调度模块22可分别对应多个工作模块21,即用于为对应的多个工作模块21提供调度服务。
[0087]工作模块21获取待处理的计算任务,并通过复用所在存储设备上的计算资源,完成对计算任务的处理。
[0088]所述计算任务可包括:离线任务、在线任务以及实时任务。
[0089]根据任务类型的不同,工作模块21获取计算任务的方式也会不同,如下所示:
[0090]I)工作模块21拉取离线任务
[0091]工作模块21在每次拉取离线任务之前,向调度模块22发送调度请求,接收调度模块22返回的调度指令,从消息中间件中拉取调度指令中携带的离线业务标识对应的离线任务,消息中间件中的离线任务为前端模块23接收到后发送到消息中间件中的;
[0092]2)工作模块21接收发送来的在线任务或实时任务
[0093]工作模块21接收前端模块23针对接收到的在线任务或实时任务向调度模块22发出调度请求后,根据调度模块22返回的调度指令中携带的工作模块标识发送来的在线任务或实时任务。
[0094]前端模块23负责任务接入,通过与用户进行交互,获取用户发布的各类型任务。调度模块22是系统中的调度组件,负责整个系统的任务调度。
[0095]前端模块23在接收到一个在线任务或实时任务后,可向调度模块22发送调度请求,询问调度模块22负责处理该任务的是哪个工作模块21,调度模块22接收到来自前端模块23的调度请求后,会从众多的工作模块21中选出一个负责处理该任务,并将选出的工作模块标识携带在调度指令中返回给前端模块23,进而由前端模块23将该任务发送给所选出的工作模块21进行处理。
[0096]前端模块23可将接收到的离线任务发送到消息中间件中。每个工作模块21在每次拉取离线任务之前,都会向调度模块22发送调度请求,询问调度模块22本次需要拉取哪个离线业务的任务,调度模块22接收到来自工作模块21的调度请求后,会按照调度规则,向工作模块21返回携带有离线业务标识的调度指令,通过这种方式来通知工作模块21去拉取哪个离线业务的任务。
[0097]调度模块22作为调度组件,需要同时满足离线调度和在线调度的各种特性。在线调度的特性可包括:提供可用的工作模块21,保证各个工作模块21之间的负载均衡等。离线调度的特性可包括:控制各工作模块21拉取各个离线业务的任务数量和速度,保护工作模块21的安全和执行效率,防止过高压力等。
[0098]另外,每个工作模块21均可处理所有离线业务的任务,根据调度模块22的调度,可以对多个离线业务进行计算资源和时间的分配,即在计算资源有限的情况下在各个离线业务之间调配计算资源,并需要保证计算服务不会对工作模块21所在存储设备上原有的存储服务造成影响。
[0099]调度模块22具体如何进行调度不作限制,可根据实际需要而定。
[0100]本实施例中,计算任务可以消息的形式进行传递,而且,对于不同类型的计算任务,可采用不同的传递和处理方式,如下所示:
[0101]I)离线任务
[0102]通过消息中间件传递消息;
[0103]工作模块21调起离线任务对应的业务进程完成任务处理;
[0104]2)在线任务
[0105]通过RPC协议传递消息;
[0106]工作模块21调起在线任务对应的业务进程完成任务处理;
[0107]3)实时任务
[0108]通过RPC协议传递消息;
[0109]工作模块21使用自身线程完成任务处理。
[0110]通常来说,离线任务对实时性要求较低,但对吞吐率要求较高,在线任务对实时性要求较高,但对吞吐率要求较低,实时任务对实时性要求较高,且多要求同步返回处理结果O
[0111]用户可根据自身业务的计算特点等,选取合适的计算模式,即离线模式、在线模式或实时模式,对应的任务则分别为离线任务、在线任务或实时任务。
[0112]另外,工作模块21在每处理一个计算任务之前,还可将该计算任务发送给代理模块24,并在任务处理完成后通知代理模块24。
[0113]代理模块24对该计算任务进行保存,且若在超过预定时长之前接收到工作模块21发送来的任务完成通知,则删除该计算任务,否则,转由其它工作模块21对该计算任务进行处理。
[0114]通过上述方式,可使得任务不会丢失,尽可能地确保每个任务均被正确处理。所述预定时长的具体取值可根据实际需要而定。
[0115]总之,采用本发明所述方案,在存储设备上部署工作模块,工作模块可通过复用存储设备上闲置的计算资源,完成对计算任务的处理,从而以近乎零成本的方式获取到了大量的计算能力,相比于现有技术,无需再专门搭建物理计算集群,进而极大地降低了对资源和成本的消耗,并提高了存储设备的资源利用率。
[0116]在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0117]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0118]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0119]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(R0M,Read-Only Memory,)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0120]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1.一种计算任务处理方法,其特征在于,包括: 工作模块获取待处理的计算任务,所述工作模块部署在云存储系统中的存储设备上的; 所述工作模块通过复用所在存储设备上的计算资源,完成对所述计算任务的处理。2.根据权利要求1所述的方法,其特征在于, 所述计算任务包括:尚线任务、在线任务以及实时任务。3.根据权利要求2所述的方法,其特征在于, 所述工作模块获取待处理的计算任务包括: 所述工作模块拉取离线任务; 所述工作模块接收发送来的在线任务或实时任务。4.根据权利要求3所述的方法,其特征在于, 所述工作模块拉取离线任务包括: 所述工作模块在每次拉取离线任务之前,向调度模块发送调度请求,并接收所述调度模块返回的调度指令,从消息中间件中拉取所述调度指令中携带的离线业务标识对应的离线任务,所述消息中间件中的离线任务为所述前端模块接收到后发送到所述消息中间件中的。5.根据权利要求3所述的方法,其特征在于, 所述工作模块接收发送来的在线任务或实时任务包括: 所述工作模块接收所述前端模块针对接收到的在线任务或实时任务向调度模块发出调度请求后,根据所述调度模块返回的调度指令中携带的工作模块标识发送来的在线任务或实时任务。6.根据权利要求2所述的方法,其特征在于, 所述完成对所述计算任务的处理包括: 当所述计算任务为离线任务或在线任务时,所述工作模块调起所述计算任务对应的业务进程,完成对所述计算任务的处理; 当所述计算任务为实时任务时,所述工作模块使用自身线程,完成对所述计算任务的处理。7.根据权利要求1所述的方法,其特征在于, 该方法进一步包括: 在处理所述计算任务之前,所述工作模块将所述计算任务发送给代理模块,以便所述代理模块对所述计算任务进行保存,且若在超过预定时长之前接收到所述工作模块发送来的任务完成通知,则删除所述计算任务,否则,转由其它工作模块对所述计算任务进行处理。8.一种计算任务处理系统,其特征在于,包括:工作模块; 所述工作模块部署在云存储系统中的存储设备上, 所述工作模块,用于获取待处理的计算任务,并通过复用所在存储设备上的计算资源,完成对所述计算任务的处理。9.根据权利要求8所述的系统,其特征在于, 所述计算任务包括:尚线任务、在线任务以及实时任务。10.根据权利要求9所述的系统,其特征在于, 所述工作模块拉取离线任务; 所述工作模块接收发送来的在线任务或实时任务。11.根据权利要求10所述的系统,其特征在于, 所述系统中进一步包括:调度模块和前端模块; 所述工作模块在每次拉取离线任务之前,向所述调度模块发送调度请求,接收所述调度模块返回的调度指令,从消息中间件中拉取所述调度指令中携带的离线业务标识对应的离线任务; 所述调度模块,用于当接收到来自所述工作模块的调度请求后,向所述工作模块返回携带有需要拉取的离线业务标识的调度指令; 所述前端模块,用于将接收到的离线任务发送到所述消息中间件中。12.根据权利要求11所述的系统,其特征在于, 所述前端模块进一步用于,当接收到在线任务或实时任务时,向所述调度模块发送调度请求,将所述在线任务或实时任务发送给所述调度模块返回的调度指令中携带的工作模块标识对应的工作模块; 所述调度模块进一步用于,当接收到来自所述前端模块的调度请求后,向所述前端模块返回携带有负责处理任务的工作模块标识的调度指令。13.根据权利要求9所述的系统,其特征在于, 当所述计算任务为离线任务或在线任务时,所述工作模块调起所述计算任务对应的业务进程,完成对所述计算任务的处理; 当所述计算任务为实时任务时,所述工作模块使用自身线程,完成对所述计算任务的处理。14.根据权利要求8所述的系统,其特征在于, 所述系统中进一步包括:代理模块; 所述工作模块进一步用于,在处理所述计算任务之前,将所述计算任务发送给所述代理模块,并在任务处理完成后通知所述代理模块; 所述代理模块,用于对所述计算任务进行保存,且若在超过预定时长之前接收到所述工作模块发送来的任务完成通知,则删除所述计算任务,否则,转由其它工作模块对所述计算任务进行处理。
【文档编号】G06F9/50GK106095534SQ201610399492
【公开日】2016年11月9日
【申请日】2016年6月7日
【发明人】陈曦, 高巍, 范利平, 牛磊, 林晓刚
【申请人】百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1