一种任务同步方法

文档序号:6624386阅读:149来源:国知局
一种任务同步方法
【专利摘要】本申请公开了一种任务同步方法,该方法中利用一集中存储设备存储分布式系统中各实例的任务执行信息,每个实例通过周期性地从该集中存储设备中获取其他实例的任务执行信息,可以及时掌握各实例的步骤执行状态,从而可以实现任务在各实例间的同步执行。采用本发明,可以避免新增实例时对原有实例正常运行的影响,且易于实现。
【专利说明】一种任务同步方法

【技术领域】
[0001]本发明涉及分布式应用技术,特别是涉及一种分布式应用系统中的任务同步方法。

【背景技术】
[0002]目前,对于步骤运算数据量非常大且有时间要求的业务应用,通常使用分布式系统实现。具体而言,对于一个业务应用,如果有若干步骤需要在指定时间内完成且需要计算的数据量非常大,该业务应用的执行将需要由分布在多台机器上的多个实例共同完成。该类业务应用中的各步骤通常需要按照先后顺序执行,即一个步骤必须在前一步骤的所有执行实例完成后才能开始执行。
[0003]在实际应用中,每个实例执行某个步骤的计算任务很难在同一时间完成。例如,当分布在N台服务器上的M个实例共同执行步骤Pl时,假设给每个实例分配同样多的计算任务(如10万条数据),因为服务器本身配置的原因或网络1的原因,造成实例I计算10万条记录需要10分钟,而实例2完成10万条记录可能需要11分钟,并且实际上也存在计算数据条数不能绝对平均的分配给M个实例的情况;再假设如果给每个实例设置一个完成任务的时间点,比如凌晨3点整完成Pl步骤中的任务,也可能因为同样的原因,存在部分实例无法在指定时间内完成的情况(这种情况在实际的分布式系统运行中出现的概率较高)。
[0004]基于以上原因,为了确保各步骤按照先后顺序执行,需要实现在各个实例之间多个任务步骤的同步。各个实例需要在等待其他实例都完成了相同步骤的任务后才能开始下个步骤的任务。例如:当执行步骤Pl时,从实例I到实例M,在分别完成所分配任务后需要各自等待,直到最后一个完成Pl步骤任务的实例执行完成后(也就意味着Pl步骤任务已经全部完成),各个实例在判断到Pl步骤全部完成后自己开始执行P2步骤的任务,同Pl —样,当全部实例都完成各自的P2步骤任务后,再开始执行下一个步骤P3,依次类推,从而实现每个任务步骤执行的同步。
[0005]目前,在分布式应用场景下,每个实例完成一项任务步骤工作后,是通过广播的方式通知其他实例本实例的步骤执行状态信息,从而实现了将每个实例的任务执行情况信息同步到全部实例。
[0006]上述采用广播方式实现的实例间任务同步的方法,需要每个实例知道其他实例的存在,才可以将信息广播给其他实例中。对于正在线上运行的系统,当动态增加了新实例时,需要老的实例重新配置才能知道该新实例的存在,因此,新实例的增加可能会引起老实例的线上重启。
[0007]另外,广播方式需要每个实例开发通讯的接口,接收其他实例传播来的任务执行信息,要从应用开发实现上确保通讯的及时性和可用性,技术实现有一定的复杂度。一旦信息在传播过程中丢失,会造成整个任务同步机制受影响,计划业务将无法执行,存在有较大风险。
[0008]由此可见,现有的采用广播方式实现的任务同步方法存在新增实例时影响原有实例的正常运行以及通讯技术要求高、实现复杂度高等问题。


【发明内容】

[0009]有鉴于此,本发明的主要目的在于提供一种任务同步方法,该方法应用于分布式应用系统中,可避免新增实例时对原有实例正常运行的影响,且易于实现。
[0010]为了达到上述目的,本发明提出的技术方案为:
[0011]一种任务同步方法,该方法应用于分布式系统中,包括:
[0012]当执行业务应用任务的每个实例启动后,将本实例的实例信息记录在系统的集中存储设备中;
[0013]对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,根据本周期从所述集中存储设备中获取的所述任务的任务执行信息以及当前执行所述任务的有效实例,确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤,并在本实例未执行所确定出的步骤时,启动本实例执行该步骤,在所述集中存储设备中所述任务的任务执行信息中记录相应的步骤执行信息,所述步骤执行信息包括用于指示本实例已执行所述步骤的信息以及用于指示本实例执行所述步骤的状态为执行中的信息;
[0014]对于每个所述实例,当该实例执行完所述任务的一个步骤时,将所述集中存储设备的所述任务执行信息中所记录的该实例执行所述步骤的状态修改为执行完成。
[0015]综上所述,本发明提出的任务同步方法,利用一集中存储设备存储分布式系统中各实例的任务执行信息,这样,每个实例通过周期性地从该集中存储设备中获取其他实例的任务执行信息,可以及时掌握各实例的步骤执行状态,从而可以实现任务在各实例间的同步执行。同时,本发明在新增实例时对原有实例正常运行没有影响,且不需要大幅度地增加通讯接口的开销、应用成本较低、易于实现。

【专利附图】

【附图说明】
[0016]图1为本发明实施例一的流程示意图。

【具体实施方式】
[0017]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
[0018]本发明的核心思想是:在分布式系统中引入一集中存储设备,用于存储分布式系统中各实例的任务执行信息,每个实例启动后在执行每一步骤时以及步骤执行完毕时都需要修改其在集中存储设备中的任务执行信息,并且每个实例需要周期性地从该集中存储设备中获取其他实例的任务执行信息,以实现任务中各步骤执行的同步。如此,既可避免新增实例时对原有实例正常运行的影响,又不需要大幅度增加通讯接口的开销,应用成本较低、易于实现。
[0019]图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
[0020]步骤101、当执行业务应用任务的每个实例启动后,将本实例的实例信息记录在系统的集中存储设备中。
[0021]本步骤中,用于实现实例在集中存储设备的注册,这样,集中存储设备中将保存执行任务的所有实例。当在任务执行过程中,新增新的实例时,直接在集中存储设备中记录该实例的实例信息即可,由于实例启动后会周期性的到集中存储设备中获取当前所执行任务的实例信息以及任务执行信息,因此,可以确保之前已启动的实例可以及时获知新增实例的相关信息,而不需要再进行新增实例的通知以及对已启动的实例进行重启。
[0022]所述实例信息可以包括实例的编号、实例的名称等信息。较佳地,还可以包括实例的更新时间,所述更新时间为进行记录所述实例信息的时刻,以供此后进行实例有效性的判断。
[0023]步骤102、对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,根据本周期从所述集中存储设备中获取的所述任务的任务执行信息以及当前执行所述任务的有效实例,确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤,并在本实例未执行所确定出的步骤时,启动本实例执行该步骤,在所述集中存储设备中所述任务的任务执行信息中记录相应的步骤执行信息,所述步骤执行信息包括用于指示本实例已执行所述步骤的信息以及用于指示本实例执行所述步骤的状态为执行中的信息。
[0024]本步骤中,每个实例启动后,需要周期性地去集中存储设备中获取当前所执行任务的实例信息以及任务的任务执行信息,基于这些信息,可以确定出当前任务的执行情况,即当前执行任务的有效实例有哪些,以及当前任务执行到哪一步了,进而可以基于此确定当前是否需要启动新的步骤的执行,还是需要等待其他实例执行完成本实例最近已执行完成的步骤,从而可以实现任务的同步。
[0025]这里,实例在启动执行每个步骤时都要在集中存储设备中记录该状态信息,以使其他实例可以及时获知该步骤已被本实例正在执行,实现实例间步骤执行状态的共享。
[0026]在实际应用中,所述更新周期的长度越短,所获取信息的实时性越高,但是也会存在监控开销过大的情况,具体可由本领域技术人员根据实际需要在信息实时性和处理开销之间进行平衡,设置合适的更新周期。
[0027]较佳地,为了便于对实例有效性的识别,每个实例在其更新周期到达时,可以在所述集中存储设备中将本实例的更新时间记录为当前时刻,这样可以基于实例的更新时间判断该实例是否已经退出任务的执行成为无效实例。
[0028]较佳地,可以采用下述方法,确定出当前执行所述任务的有效实例:
[0029]将所述集中存储设备中当前记录的执行所述任务的实例中,选择出所有满足:tnow-t0 ( tupdate ( tnow的实例作为当前执行所述任务的有效实例,其中,tupdate为所述集中存储设备中记录的实例的更新时间,tnow为当前时间,t0为预设的有效时间间隔,所述h大于所述更新周期的间隔。
[0030]较佳地,可以采用下述方法确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤:
[0031]步骤xl、从所述任务的步骤序列中取出第一个当前未被检查的步骤,所述步骤序列中的步骤按照执行序号的升序排列。
[0032]采用本步骤,可以从所述任务的步骤序列中取出一个当前未被检查且执行序号最小的步骤,作为步骤x2中进行检查的对象。
[0033]步骤x2、根据所述任务的任务执行信息,检查当前所取出的步骤是否已被所述有效实例完成,如果是,则执行步骤xl,否则,将当前所取出的步骤确定为:当前未被所有所述有效实例完成的步骤中执行序号最小的步骤。
[0034]这里需要说明的是,当前未被所有所述有效实例完成的步骤将包括所有有效实例都没有执行的步骤。
[0035]步骤103、对于每个所述实例,当该实例执行完所述任务的一个步骤时,将所述集中存储设备的所述任务执行信息中所记录的该实例执行所述步骤的状态修改为执行完成。
[0036]本步骤用于在每个实例执行完成一步骤时,将该执行完成的状态信息记录在集中存储设备(即记录在任务执行信息中),以供其他实例及时获知该信息,进而可以据此判断是否执行下一步骤或是等待其他实例的执行完成,从而可以实现分布式系统的任务同步。
[0037]综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种任务同步方法,该方法应用于分布式系统中,其特征在于,包括: 当执行业务应用任务的每个实例启动后,将本实例的实例信息记录在系统的集中存储设备中; 对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,根据本周期从所述集中存储设备中获取的所述任务的任务执行信息以及当前执行所述任务的有效实例,确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤,并在本实例未执行所确定出的步骤时,启动本实例执行该步骤,在所述集中存储设备中所述任务的任务执行信息中记录相应的步骤执行信息,所述步骤执行信息包括用于指示本实例已执行所述步骤的信息以及用于指示本实例执行所述步骤的状态为执行中的信息; 对于每个所述实例,当该实例执行完所述任务的一个步骤时,将所述集中存储设备的所述任务执行信息中所记录的该实例执行所述步骤的状态修改为执行完成。
2.根据权利要求1所述的方法,其特征在于,所述实例信息包括实例的编号、实例的名称和实例的更新时间,所述更新时间为进行记录所述实例信息的时刻。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,在所述集中存储设备中将本实例的更新时间记录为当前时刻。
4.根据权利要求1所述的方法,其特征在于,所述当前执行所述任务的有效实例的确定方法包括: 将所述集中存储设备中当前记录的执行所述任务的实例中,选择出所有满足:tnow-t0 ( tupdate ( tnow的实例作为当前执行所述任务的有效实例,其中,tupdate为所述集中存储设备中记录的实例的更新时间,tnow为当前时间,t0为预设的有效时间间隔,所述h大于所述更新周期的间隔。
5.根据权利要求1所述的方法,其特征在于,所述确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤包括: xl、从所述任务的步骤序列中取出第一个当前未被检查的步骤,所述步骤序列中的步骤按照执行序号的升序排列; x2、根据所述任务的任务执行信息,检查当前所取出的步骤是否已被所述有效实例完成,如果是,则执行步骤xl,否则,将当前所取出的步骤确定为:当前未被所有所述有效实例完成的步骤中执行序号最小的步骤。
【文档编号】G06F9/52GK104182283SQ201410418045
【公开日】2014年12月3日 申请日期:2014年8月22日 优先权日:2014年8月22日
【发明者】陈鹏 申请人:北京京东尚科信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1