一种任务自动拆分以及子任务并行执行的方法及其系统的制作方法

文档序号:9921922阅读:950来源:国知局
一种任务自动拆分以及子任务并行执行的方法及其系统的制作方法
【技术领域】
[0001]本发明涉及一种任务自动拆分以及子任务并行执行的方法及其系统,尤其涉及一种基于分布式队列实现的任务自动拆分以及子任务分布式并行执行方法及其系统。
【背景技术】
[0002]在分布式程序中定时调用(worker)是异步处理中常用的手段。我们往往会分布几台机器。然后让这几台机器定时运行预设置的任务。但是生成环境是瞬息万变的。可能由于客观原因,某个定时调用(worker)执行速度满足不了要求,但是线上又急于执行完定时调用任务。这个时候就需要一个功能,就是能够快速将这个定时调用要处理的内容水平拆分,分派到预设值的闲置机器上,一起处理,加快速度,尽量降低风险,并且灵活地控制定时调用执行的速度。但是平常这些预备的机器又不能闲置,所以需要一套成熟的中间单元,管理一些预备的机器,能够通过控制这些机器,控制定时调用执行的状况。
[0003]当出现某个定时调用执行慢的情景后,如果是并发执行定时调用,只需要在别的机器上部署定时调用代码,达到多定时调用执行的目的;如果是互斥定时调用,也就是说整个环境只能有一个定时调用在运行,这个时候,只有通过分析代码,优化代码,然后重新上线,才能解决问题。不管是并发执行定时调用还是互斥定时调用,如果不能及时处理执行慢的问题,可能会造成不可预知的风险。

【发明内容】

[0004]本发明正是鉴于以上的问题而提出的,其目的在于提供一种通过远程灵活控制将指定定时调用任务水平拆分成若干子任务,分配到其他空闲子任务服务器上,当所有子任务都运行完的时候,指定定时调用任务完成,从而通过这种方式实现快速响应执行不同定时调用任务的优先级、以及应急处理的任务的自动拆分以及子任务并行执行的方法及其系统。
[0005]本发明的任务自动拆分以及子任务并行执行的方法,包括:将需要处理的主任务拆分为多个子任务;获取能配置给子任务的单元,查看能配置给子任务的单元的状态,并筛选出没有运行相应子任务的单元;对筛选出的每个单元分配相等的参数,创建树节点,并行启动子任务;在所有子任务启动成功之后,锁定相应的主任务;子任务并行执行完成,更新树节点状态;判断是否执行完成所有子任务;在判断为执行完成所有子任务的情况下,发出执行成功的消息,并解锁相应的主任务。
[0006]本发明的任务自动拆分以及子任务并行执行的方法,其中,还包括:在判断没有执行完成所有子任务的情况下,等待执行完成其他子任务。
[0007]本发明的任务自动拆分以及子任务并行执行的方法,其中,按照自定义拆分规则将需要处理的主任务拆分为多个子任务。
[0008]本发明的任务自动拆分以及子任务并行执行的方法,其中,在树节点中存储每个子任务执行的状态,并以自定义的格式存储。
[0009]本发明的任务自动拆分以及子任务并行执行的方法,其中,能通过监控节点状态来异步判断是否执行完成所有子任务。
[0010]本发明的任务自动拆分以及子任务并行执行的方法,其中,通过指定IP地址和端口将执行成功的消息通知给主任务单元。
[0011]本发明的任务自动拆分以及子任务并行执行系统,包括:拆分单元,将需要处理的主任务拆分为多个子任务;获取筛选单元,获取能配置给子任务的单元,查看能配置给子任务的单元的状态,并筛选出没有运行相应子任务的单元;创建启动单元,对筛选出的每个单元分配相等的参数,仓Il建树节点,并行启动子任务;锁定单元,在所有子任务启动成功之后,锁定相应的主任务;更新单元,子任务并行执行完成,更新树节点状态;判断单元,判断是否执行完成所有子任务;解锁单元,在判断为执行完成所有子任务的情况下,发出执行成功的消息,并解锁相应的主任务。
[0012]本发明的任务自动拆分以及子任务并行执行系统,其中,还包括:等待单元,在判断没有执行完成所有子任务的情况下,等待执行完成其他子任务。
[0013]本发明的任务自动拆分以及子任务并行执行系统,其中,在拆分单元中,按照自定义拆分规则将需要处理的主任务拆分为多个子任务。
[0014]本发明的任务自动拆分以及子任务并行执行系统,其中,在树节点中存储每个子任务执行的状态,并以自定义的格式存储。
[0015]本发明的任务自动拆分以及子任务并行执行系统,其中,在判断单元中,能通过监控节点状态来异步判断是否执行完成所有子任务。
[0016]本发明的任务自动拆分以及子任务并行执行系统,其中,在解锁单元中,通过指定IP地址和端口将执行成功的消息通知给主任务单元。
[0017]发明效果
[0018]通过本申请发明的上述技术方案,中间件远程控制自定义任务水平拆分成子任务,通过自定义的节点方式控制子任务并行运行,灵活控制定时调用执行的过程,间接实现了定时调用优先级的功能,加快了指定定时调用的执行速度,同时可以对生产环境的突发情况快速地响应。
【附图说明】
[0019]图1为表示本申请发明的任务自动拆分以及子任务并行执行系统的整体结构图。
[0020]图2为表示任务拆分以及子任务执行的示意图。
[0021]图3是本申请发明的自定义节点以及分布式队列实现的示例图。
[0022]图4为表示本申请发明的任务自动拆分以及子任务并行执行的方法的流程图。
[0023]图5为表示本申请发明的任务自动拆分以及子任务并行执行的系统的结构的方框图。
[0024]图6为表示本申请发明的任务自动拆分以及子任务并行执行装置的结构的方框图。
【具体实施方式】
[0025]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0026]图1为表示本申请发明的任务自动拆分以及子任务并行执行的整体结构图。
[0027]如图1所示,该系统包括主任务服务器(例如图中所示的workerl?n)、中间服务器(例如包括图中所示的中间服务器客户端A以及中间服务器服务端B)、分布式应用服务器(例如图中所示的Zookeeper服务器)、缓存服务器(例如图中所示的Rdeis缓存服务器)以及子任务服务器(例如图中所示的子任务服务器I?η)。在此,需要指出图1中所例示的内容仅仅是例示,本申请发明并不限于此,也可以采用其他的设备。下面具体地进行说明。
[0028]主任务服务器是指依赖中间服务器客户端Α,需要将主任务拆分为多个子任务的主任务服务器。每次执行任务前,将要执行的任务参数封装,然后向中间服务器入口提交拆分子任务分批执行请求。每次请求会把当前机器的IP地址和监听的端口同时告知中间控制单元。在中间控制单元中子任务全部处理完成后,会通过指定IP地址和端口返回消息。
[0029]中间控制服务器包括中间服务器客户端A以及中间服务器服务端B,中间服务器客户端A以依赖包的方式,让业务系统集成到中间控制服务器。中间服务器基于技术架构例如基于ΝΙ0(ΝΙ0是new 1的简称,为一种新的技术架构,比普通1的性能高,可靠性好)的服务来处理请求),管理着所有的子任务服务器,在服务器配置界面可以配置需要处理的子任务(worker)对应不同的子任务服务器。
[0030]分布式应用单元(例如Zookeeper服务器)中配置已经分配的子任务信息,在缓存单元例如redis缓存服务器中存储定时调用任务(worker)与子服务器的映射关系、主任务拆分成子任务的配置(包括当前主任务可用的机器、拆分最大子任务数量、拆分策略)。通过预配置的方式,来确定每个类型的定时调用任务(worker),有几台子任务服务器对应,达到动态配置的效果。同时分布式应用单元中也会存储每个子任务执行的状态,并以树节点的方式按照中间控制服务器自定义的格式存储。
[0031]子任务单元(例如子任务服务器)是运行子任务的服务器。子任务服务器上必须预先部署相关子任务的代码,同时在分布式应用单兀上关联子任务与子任务服务器的映射关系。在子任务服务器中不会自己启动处理子任务,统一由中间控制服务器来进行调配。需要注意的是,主任务服务器即图中所示的worker服务器也可以作为子任务服务器,避免主任务服务器拆分任务后,本身不运行数据了,造成机器的浪费。
[0032]缓存单元(例如图中所示的Redis缓存服务器)中存储worker配置,例如主任务拆分成子任务的配置(包括当前主任务可用的机器、拆分最大子任务数量、拆分策略等)。
[0033]以下,参照附图2对本申请发明的任务拆分以及子任务执行的情况具体地进行说明。图2为表示任务拆分以及子任务执行的示意图。
[0034]如图2所示,首先主任务服务器开始启动定时调用,并自定义拆分规则,然后调用远端接口。
[0035]接下来,中间控制服务器接受远端调用请求,并在redis缓存服务器中查看worker配置,例如主任务拆分成子任务的配置(包括当前主任务可用的机器、拆分最大子任务数量、拆分策略等)。
[0036]接下来,中间控制服务器根据所获取到的Worker配置而得到分配给这些子任务的机器即子任务服务器,然后在分布式应用服务器(例如Zookeeper服务器)中查看指定机器的状态,并筛选出没有在运行相同的子任务的机器,在分布式应用服务器(例如Zookeeper服务器)中根据所筛选出的没有运行相同的子任务的子任务服务器来存储每个子任务执行的状态,并以树节点的方式按照中间控制服务器自定义的格式存储。
[0037]接下来,中间控制服务器进行等分计算,对筛选出的没有运行相同的子任务的每个子任务服务器分配相等的目标参数,接下来对相应的子任务服务器发出启动指令来启动子任务。
[0038]在子任务启动完成之后打上标志位,并将该子任务执行成功的标志发送到主任务服务器,在主任务服务器中将当前的子任务放入待确认队列,并锁定相应的主任务。
[0039]接下来,子任务执行完成,在分布式应用服务器中更新树节点状态即更新子任务执行的状态,并在中间控制服务器中监控节点状态,来异步判断所有的子任务是否完成。
[0040]如果判断所有节点执行完毕,则通知主服务器任务执行成功,并将锁定的主任务解锁。
[0041]在以上的过程中,需要注意以下的情况。即
[0042]主任务服务器的拆分方式
[0043]由中间控制服务器提供接口。主任务服务器必须制定子任务执行子任务代码。其中入口参数必须是一个数组参数。这样是为了让中间控制服务器能够基于等分原则进行拆分。例如主任务服务器传来[0,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1