实时计算任务调整方法和装置与流程

文档序号:17220728发布日期:2019-03-27 11:55阅读:191来源:国知局
实时计算任务调整方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种实时计算任务调整方法和装置。



背景技术:

实时计算的本质,是多个机器同时计算同一个指标。如每个商品的访问量指标,如果这个计算任务分配了100台机器,数据源是机器的每一次的访问日志,那么就是100台机器分到不等的流量,然后进行计算。为了保证业务数据的正确性,现在大多都是指定更多的机器,用更多的机器来保证业务数据的稳定性。这种方法需要业务方对自己的业务比较的了解,需要知道每个计算任务的峰值,大概需要分配多少台机器。

然而我们的访问流量大多数是一个波峰波谷的趋势,晚上访问用户很少,白天某几个时段访问用户特别多,所以采用更多机器保证业务数据的方法,会造成大量机器的浪费,并且制定的机器数,只能维持预计峰值的流量,如果流量突然暴涨,那么这个计算任务的机器数不足也会造成计算的失败,导致业务数据错误。



技术实现要素:

为了解决上述问题,本发明提供一种实时计算任务调整方法和装置,可以根据实时计算任务的流量变化动态调整执行计算任务的计算资源,从而达到计算资源的最大利用率,可以解决突来的大流量的冲击(超过预计峰值)的情况下,保证实时计算任务的正确性。

本发明提供一种实时计算任务调整方法,包括:

根据当前检测到的第一计算任务的执行状况,确定需要调整所述第一计算任务;

启动第二计算任务,在所述第二计算任务运行之后停止所述第一计算任务。

可选地,根据当前检测到的第一计算任务的执行状况,确定需要调整所述第一计算任务,包括:

检测所述第一计算任务的执行时间,若所述执行时间大于最大执行时间阈值或小于最小执行时间阈值,则确定需要调整所述第一计算任务;或者

检测所述第一计算任务的心跳时间,若所述心跳时间大于最大心跳时间阈值或者小于最小心跳时间阈值,则确定需要调整所述第一计算任务;或者

检测到所述第一计算任务的负载容量,若所述负载容量大于最大负载容量阈值或小于最小负载容量阈值,则确定需要调整所述第一计算任务。

可选地,确定需要调整所述第一计算任务之后,还包括:

根据检测到的所述第一计算任务的执行状况,确定与所述执行状况对应的计算资源。

可选地,启动第二计算任务,包括:

根据与所述执行状况对应的计算资源,启动所述第二计算任务,使得所述第二计算任务使用调整后的的计算资源与所述执行状况对应的计算资源相匹配。

可选地,启动所述第二计算任务之后,包括:

向执行所述第一计算任务的计算节点发送停止任务的指令,以使所述第一计算任务的计算节点结束所述第一计算任务,释放所述计算节点的计算资源。

可选地,所述第一计算任务包括具有拓扑关系的实时计算任务。

可选地,所述的方法还包括:

在所述第一计算任务启动之后,记录预先分配好的执行所述第一计算任务的多个计算节点;

将所述第一计算任务处理的所有消息分发到预先分配好的所述多个计算节点上;

所述多个计算节点具有拓扑关系,即一个计算节点计算完成后,把计算结果按照预先设定的消息流处理的拓扑关系传递给后续的计算节点,直到所有消息处理完毕为止。

本申请还提供一种实时计算任务调整装置,包括:

监测模块,用于根据当前检测到的第一计算任务的执行状况,确定需要调整所述第一计算任务;

新任务启动模块,用于启动第二计算任务;

旧任务关闭模块,用于在所述第二计算任务运行之后停止所述第一计算任务。

本申请还提供一种实时计算任务调整系统,包括:任务监控装置和任务调节装置;

所述任务监控装置,用于检测当前的第一计算任务的执行状况,并将所述第一计算任务的执行状况发送给所述任务调节装置;

所述任务调节装置,用于根据所述第一计算任务的执行状况,确定需要调整所述第一计算任务,启动第二计算任务,在所述第二计算任务运行之后停止所述第一计算任务。

可选地,所述任务监控装置,用于检测所述第一计算任务的执行时间、心跳时间和/或负载容量并发送给所述任务调节装置;

所述任务调节装置,用于在判断所述执行时间大于最大执行时间阈值或小于最小执行时间阈值,则确定需要调整所述第一计算任务;或者在判断所述心跳时间大于最大心跳时间阈值或者小于最小心跳时间阈值,则确定需要调整所述第一计算任务;或者在判断所述负载容量大于最大负载容量阈值或小于最小负载容量阈值,则确定需要调整所述第一计算任务。

可选地,所述任务调节装置,还用于根据检测到的所述第一计算任务的执行状况,确定与所述执行状况对应的计算资源。

可选地,所述任务调节装置,还用于根据与所述执行状况对应的计算资源,启动所述第二计算任务,使得所述第二计算任务使用的计算资源与所述执行状况对应的计算资源相匹配。

可选地,所述的系统还包括:多个计算节点,其中,多个计算节点中包括执行所述第一计算任务的计算节点和执行所述第二计算任务的计算节点;

所述任务调节装置,向执行所述第二计算任务的计算节点发送启动所述第二计算任务的指令;以使执行所述第二计算任务的计算节点开始执行所述第二计算任务;

所述任务调节装置,在所述第二计算任务开始执行后,向所述第一计算任务的计算节点发送停止任务的指令,以使所述第一计算任务的计算节点结束所述第一计算任务,释放计算资源。

可选地,所述任务监控装置设置在所述任务调节装置中,且所述任务调节装置外置于所述多个计算节点构成的集群拓扑结构外,用于实时计算任务的调整。

可选地,所述任务监控装置的监控界面包括监控实时计算任务执行状况的可视化窗口。

本发明实施例可以根据当前检测到的第一计算任务的执行状况,确定需要调整所述第一计算任务;启动第二计算任务,在所述第二计算任务运行之后停止所述第一计算任务,从而可以实现在计算任务过大时自动增加计算资源,保证计算任务的正确性,在计算任务过小时自动减少计算资源,避免资源浪费。

附图说明

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

图1为本申请实施例所述方法需要达成的技术效果的示意图;

图2为本申请一实施例提供的实时计算任务调整方法的流程示意图;

图3为本申请一实施例提供的实时计算任务调整流程架构图;

图4为本申请的一种任务执行状况的监控示意图;

图5为本申请的一种实时计算任务调整界面示意图;

图6为本申请一实施例提供的实时计算任务调整装置的结构示意图;

图7为本申请提供的一种实时计算任务调整系统结构示意图。

具体实施方式

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

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

本申请可以应用于如下场景:

随着信息科技的日新月异,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样、更加便捷,同时对于信息的时效性要求也越来越高,例如,基于分布式集群的实时流式处理系统成为对海量数据进行计算和处理的主要方式之一。实时流式处理系统的基本原理是:把海量实时数据抽象为一个个独立的消息,然后把这些消息分发到预先分配好的计算节点上,一个计算节点计算完成后,会把计算结果按照预先设定的消息流的处理顺序(拓扑关系)传递给后续的计算节点(也称下游计算节点),直到消息流处理完毕为止。上、下游计算节点之间消息流的传递可以采用点对点传递的同步模型,也可以采用分布式消息队列进行传递。

在数据量相对稳定的情况下,上述分布式流式处理系统通常采用固定的计算资源配置方式即可。但是,在大数据的实时数据处理场景中,上游数据源产生数据流的频率时常具有不确定的波动性,一方面,系统高峰时产生的数据流量会增大,而系统低峰时产生的数据流量会降低;另一方面,前台业务逻辑调整也会导致数据流量波动,例如:在购物网站进行促销活动的时段,卖家操作频繁,商品变化频率会异常增加,活动结束后,商品变化率又恢复正常,导致数据流量产生大幅度波动。

而实时流式处理系统无法预计数据流量可能出现的波动,现有技术中,为了满足系统处理数据的实时性要求,可以按照系统在高峰时的最大数据处理能力进行计算资源(即:计算节点)的配置,这样做虽然保证了系统的实时性,但是在系统低峰期,计算资源则处于大量闲置的状态,在数据流量波动幅度较大的大数据场景下,对计算资源的浪费更为显著。

由于现有的分布式流式处理系统不具备自动扩充或者释放计算资源的能力,因此要解决上述因为数据流量大幅波动引发的问题,需要通过对计算节点的操作来调整系统的计算资源,即:当发现系统压力变大后或者变小后,修改计算节点与消息分片的对应关系,并通过新增计算节点或者删除计算节点的方式实现系统计算资源的扩充或释放,由于上述过程一般依赖人工操作完成的,效率相对低下。此外,对于采用点对点同步模型传递消息的流式计算系统,由于上、下游计算节点之间的紧密耦合,计算资源的扩充或释放会影响上、下游全部计算节点,而且由于全局拓扑结构的变更,通常还需要先停止旧的任务、修改拓扑配置后再重新启动任务,整个处理过程比较复杂、耗时。

图1为本申请实施例所述方法需要达成的技术效果的示意图,如图1所示,在实时计算系统中,采用分布式消息队列传递计算任务,需要说明的是,在集群拓扑结构的计算节点之外设置了任务监控装置和任务调节装置,因此,本申请在调节实时计算任务的时候,不会对计算节点的拓扑结构进行任何变更。本申请提供的实施例期望达成的技术效果是:当消息流量高峰期时,能够自动检测到计算任务超负荷这一情况,并自动增加计算资源;当消息流量低峰期时,同样能够检测到计算任务的负载过剩的情况,并自动减少计算资源。

为达成上述目的,本申请提供一种实时计算任务调整方法,可以根据当前检测到的当前第一计算任务的执行状况,确定需要调整所述当前第一计算任务时,通过启动新的第二计算任务(新的计算任务),在所述新的第二计算任务运行之后停止所述当前的第一计算任务,从而可以实现在计算任务过大时自动增加计算资源,保证计算任务的正确性,在计算任务过小时自动减少计算资源,避免资源浪费。

图2为本申请一实施例提供的实时计算任务调整方法的流程示意图,如图2所示,包括:

101、根据当前检测到的第一计算任务的执行状况,确定需要调整所述第一计算任务;

可选地,步骤101在具体实现时包括但不限于以下的举例:

检测所述第一计算任务的执行时间,若所述执行时间大于最大执行时间阈值或小于最小执行时间阈值,则确定需要调整所述第一计算任务;或者

检测所述第一计算任务的心跳时间,若所述心跳时间大于最大心跳时间阈值或者小于最小心跳时间阈值,则确定需要调整所述第一计算任务;或者

检测到所述第一计算任务的负载容量,若所述负载容量大于最大负载容量阈值或小于最小负载容量阈值,则确定需要调整所述当前计算任务。

102、启动第二计算任务;

第二计算任务是新的计算任务,可选地,步骤102在具体实现时包括:

根据当前检测到的第一计算任务的执行状况,确定与所述执行状况对应的计算资源;

根据与所述执行状况对应的计算资源,启动所述第二计算任务,使得所述第二计算任务使用的计算资源与所述执行状况对应的计算资源相匹配。

103、在所述第二计算任务运行之后停止所述第一计算任务。

可选地,步骤103在具体实现时包括:

向执行所述第一计算任务的计算节点发送停止任务的指令,以使所述第一计算任务的计算节点结束所述第一计算任务,释放所述计算节点的计算资源。

下面对图2所示实施例所述的实时计算任务调整方法的具体实现方式进行详细的说明。

图3为本申请一实施例提供的实时计算任务调整流程架构图,如图3所示:

当前的计算任务是任务a(toplogya),其中,toplogya是具有拓扑关系的实时计算任务,在任务a启动之后,记录该任务a的并发度,也就是记录预先分配好的执行任务a的计算节点,将任务a处理的这些消息分发到预先分配好的计算节点上,这些计算节点具有拓扑关系,一个计算节点计算完成后,会把计算结果按照预先设定的消息流的处理顺序(拓扑关系)传递给后续的计算节点(也称下游计算节点),直到消息流处理完毕为止。

之后,监控任务a的执行状况,例如,监控任务a的执行时间或心跳时间(heartbeat),本实施例中,heartbeat是计算节点接收任务消息的时间,假设预设的heartbeat阈值是10秒,即每10秒上游计算节点需要传递消息给下游计算节点的,如果计算流量大的时候,当前检测的heartbeat的间隔会超出10s,此时,说明执行任务a的计算节点是超负荷的,也就是处理实时计算任务a的当前计算资源不足,这样会导致实时计算任务a出错。

举例来说,图4为本申请的一种任务执行状况的监控示意图,如图4所示,一个方块bolt2代表一个线程,5个圆是线程里的5个实时计算任务,每个计算任务之间是同步的,预设的延迟阈值为0.00005,以第一个圆(pringting,0.00008090)为例,由于该任务的延迟时间0.00008090大于延迟阈值0.00005,说明该任务执行延迟。因此,通过上述任务执行状况的监控示意图,可以知道哪个线程需要扩容。

具体在扩容时,根据需要扩容的计算任务的执行状况(延迟状况),确定需要扩容的计算资源;本申请中,优选地,根据1:2渐进逼近的扩容方式进行计算资源并发度调整方案,例如,原来是10台机器计算,调整成20台机器来计算。又例如,进程(worker):线程(spout)的比值以2倍的幅度波动增加的扩容方案。

之后,根据计算资源并发度调整方案,启动新的计算任务b(toplogyb),使得新的计算任务使用的是调整后的计算资源。图5为本申请的一种实时计算任务调整界面示意图,如图5所示,例如,原来的计算任务需要1个进程,现在扩容要2个进程,那么,需要重新启动一个可以并发2个进程的新的计算任务。

当新的计算任务b成功开始工作后,关闭旧的计算任务a。例如,新的计算任务b成功开始工作,例如新的任务b的线程(spout)拉计算任务日志的部分准备完毕的时候,可以给旧的计算任务a最开始的计算节点,发一个结束标记的数据,当旧的计算任务a最开始的计算节点接收到这个结束标记,就开始做结束操作,将内存里的数据写入数据库,之后关闭该计算节点的计算资源,从而可以释放计算资源以备调用。

由于现有的分布式流式实时计算任务处理系统不具备自动扩容或者释放计算资源的能力,因此要解决上述因为数据流量大幅波动引发的问题,需要通过对计算节点的操作来调整系统的计算资源,即:当发现系统压力变大后或者变小后,修改计算节点与消息分片的对应关系,并通过新增计算节点或者删除计算节点的方式实现系统计算资源的扩充或释放,由于上述过程一般依赖人工操作完成的,效率相对低下。此外,对于采用点对点同步模型传递消息的流式计算系统,由于上、下游计算节点之间的紧密耦合,计算资源的扩充或释放会影响上、下游全部计算节点,通常还需要先停止现有服务、修改拓扑配置后再重新启动服务,整个处理过程比较复杂、耗时。

本申请不需要通过对计算节点的操作来调整系统的计算资源,也不需要先停止旧的任务修改拓扑配置,而是通过启动新的任务进行计算资源的扩容和释放,并且在新的任务开始之后关闭旧的任务,即可实现自动扩充或者释放计算资源的能力,整个处理过程比较简单。

图6为本申请一实施例提供的实时计算任务调整装置的结构示意图,如图6所示,包括:

监测模块,用于根据当前检测到的第一计算任务的执行状况,确定需要调整所述第一计算任务;

新任务启动模块,用于启动第二计算任务;

旧任务关闭模块,用于在所述第二计算任务运行之后停止所述第一计算任务。

可选地,所述监测模块具体用于:

检测所述第一计算任务的执行时间,若所述执行时间大于最大执行时间阈值或小于最小执行时间阈值,则确定需要调整所述第一计算任务;或者

检测所述第一计算任务的心跳时间,若所述心跳时间大于最大心跳时间阈值或者小于最小心跳时间阈值,则确定需要调整所述第一计算任务;或者

检测到所述第一计算任务的负载容量,若所述负载容量大于最大负载容量阈值或小于最小负载容量阈值,则确定需要调整所述第一计算任务。

可选地,所述的装置还包括:

确定模块,用于根据所述监测模块检测到的第一计算任务的执行状况,确定与所述执行状况对应的计算资源。

可选地,所述新任务启动模块,具体用于根据所述确定模块确定的与所述执行状况对应的计算资源,启动所述第二计算任务,使得所述第二计算任务使用的计算资源与所述执行状况对应的计算资源相匹配。

可选地,所述旧任务关闭模块具体用于:

向执行所述第一计算任务的计算节点发送停止任务的指令,以使所述第一计算任务的计算节点结束所述第一计算任务,释放所述计算节点的计算资源。

本发明实施例所述的装置可以上述实施例所示的方法,其实现原理和技术效果不再赘述。

图7为本申请提供的一种实时计算任务调整系统结构示意图,如图7所示,包括:任务监控装置和任务调节装置;

所述任务监控装置,用于检测当前的第一计算任务的执行状况,并将所述第一计算任务的执行状况发送给所述任务调节装置;

所述任务调节装置,用于根据所述第一计算任务的执行状况,确定需要调整所述第一计算任务,启动第二计算任务,在所述第二计算任务运行之后停止所述第一计算任务。

可选地,所述任务监控装置,用于检测所述第一计算任务的执行时间、心跳时间和/或负载容量并发送给所述任务调节装置;

所述任务调节装置,用于在判断所述执行时间大于最大执行时间阈值或小于最小执行时间阈值,则确定需要调整所述第一计算任务;或者在判断所述心跳时间大于最大心跳时间阈值或者小于最小心跳时间阈值,则确定需要调整所述第一计算任务;或者在判断所述负载容量大于最大负载容量阈值或小于最小负载容量阈值,则确定需要调整所述第一计算任务。

可选地,所述任务调节装置,还用于根据检测到的所述第一计算任务的执行状况,确定与所述执行状况对应的计算资源。

可选地,所述任务调节装置,还用于根据与所述执行状况对应的计算资源,启动所述第二计算任务,使得所述第二计算任务使用的计算资源与所述执行状况对应的计算资源相匹配。

可选地,所述系统还包括:多个计算节点,其中多个计算节点中包括执行所述第一计算任务的计算节点和执行所述第二计算任务的计算节点;

所述任务调节装置,向执行所述第二计算任务的计算节点发送启动所述第二计算任务的指令;以使执行所述第二计算任务的计算节点开始执行所述第二计算任务;

所述任务调节装置,在所述第二计算任务开始执行后,向所述第一计算任务的计算节点发送停止任务的指令,以使所述第一计算任务的计算节点结束所述第一计算任务,释放计算资源。

可选地,所述任务监控装置设置在所述任务调节装置中,且所述任务调节装置外置于所述多个计算节点构成的集群拓扑结构外,用于实时计算任务的调整。

可选地,所述任务监控装置的监控界面包括监控实时计算任务执行状况的可视化窗口。

本发明实施例所述的系统可以上述实施例所示的方法,其实现原理和技术效果不再赘述。

本发明实施例中,上述实时计算任务调整装置的结构中包括处理器和存储器,所述存储器用于存储支持实时计算任务调整装置执行上述图2所示实施例中实时计算任务调整方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。

所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行。

本发明实施例还提供了一种计算机存储介质,用于储存实时计算任务调整装置所用的计算机软件指令,所述计算机软件指令包含了用于执行上述实时计算任务调整方法为实时计算任务调整装置所涉及的程序。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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