本申请公开了一种任务同步方法,该方法中利用一集中存储设备存储分布式系统中各实例的任务执行信息,每个实例通过周期性地从该集中存储设备中获取其他实例的任务执行信息,可以及时掌握各实例的步骤执行状态,从而可以实现任务在各实例间的同步执行。采用本发明专利技术,可以避免新增实例时对原有实例正常运行的影响,且易于实现。
【技术实现步骤摘要】
【专利摘要】本申请公开了,该方法中利用一集中存储设备存储分布式系统中各实例的任务执行信息,每个实例通过周期性地从该集中存储设备中获取其他实例的任务执行信息,可以及时掌握各实例的步骤执行状态,从而可以实现任务在各实例间的同步执行。采用本专利技术,可以避免新增实例时对原有实例正常运行的影响,且易于实现。【专利说明】
本专利技术涉及分布式应用技术,特别是涉及一种分布式应用系统中的任务同步方法。
技术介绍
目前,对于步骤运算数据量非常大且有时间要求的业务应用,通常使用分布式系统实现。具体而言,对于一个业务应用,如果有若干步骤需要在指定时间内完成且需要计算的数据量非常大,该业务应用的执行将需要由分布在多台机器上的多个实例共同完成。该类业务应用中的各步骤通常需要按照先后顺序执行,即一个步骤必须在前一步骤的所有执行实例完成后才能开始执行。 在实际应用中,每个实例执行某个步骤的计算任务很难在同一时间完成。例如,当分布在N台服务器上的M个实例共同执行步骤Pl时,假设给每个实例分配同样多的计算任务(如10万条数据),因为服务器本身配置的原因或网络1的原因,造成实例I计算10万条记录需要10分钟,而实例2完成10万条记录可能需要11分钟,并且实际上也存在计算数据条数不能绝对平均的分配给M个实例的情况;再假设如果给每个实例设置一个完成任务的时间点,比如凌晨3点整完成Pl步骤中的任务,也可能因为同样的原因,存在部分实例无法在指定时间内完成的情况(这种情况在实际的分布式系统运行中出现的概率较高)。 基于以上原因,为了确保各步骤按照先后顺序执行,需要实现在各个实例之间多个任务步骤的同步。各个实例需要在等待其他实例都完成了相同步骤的任务后才能开始下个步骤的任务。例如:当执行步骤Pl时,从实例I到实例M,在分别完成所分配任务后需要各自等待,直到最后一个完成Pl步骤任务的实例执行完成后(也就意味着Pl步骤任务已经全部完成),各个实例在判断到Pl步骤全部完成后自己开始执行P2步骤的任务,同Pl —样,当全部实例都完成各自的P2步骤任务后,再开始执行下一个步骤P3,依次类推,从而实现每个任务步骤执行的同步。 目前,在分布式应用场景下,每个实例完成一项任务步骤工作后,是通过广播的方式通知其他实例本实例的步骤执行状态信息,从而实现了将每个实例的任务执行情况信息同步到全部实例。 上述采用广播方式实现的实例间任务同步的方法,需要每个实例知道其他实例的存在,才可以将信息广播给其他实例中。对于正在线上运行的系统,当动态增加了新实例时,需要老的实例重新配置才能知道该新实例的存在,因此,新实例的增加可能会引起老实例的线上重启。 另外,广播方式需要每个实例开发通讯的接口,接收其他实例传播来的任务执行信息,要从应用开发实现上确保通讯的及时性和可用性,技术实现有一定的复杂度。一旦信息在传播过程中丢失,会造成整个任务同步机制受影响,计划业务将无法执行,存在有较大风险。 由此可见,现有的采用广播方式实现的任务同步方法存在新增实例时影响原有实例的正常运行以及通讯技术要求高、实现复杂度高等问题。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供,该方法应用于分布式应用系统中,可避免新增实例时对原有实例正常运行的影响,且易于实现。 为了达到上述目的,本专利技术提出的技术方案为: ,该方法应用于分布式系统中,包括: 当执行业务应用任务的每个实例启动后,将本实例的实例信息记录在系统的集中存储设备中; 对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,根据本周期从所述集中存储设备中获取的所述任务的任务执行信息以及当前执行所述任务的有效实例,确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤,并在本实例未执行所确定出的步骤时,启动本实例执行该步骤,在所述集中存储设备中所述任务的任务执行信息中记录相应的步骤执行信息,所述步骤执行信息包括用于指示本实例已执行所述步骤的信息以及用于指示本实例执行所述步骤的状态为执行中的信息; 对于每个所述实例,当该实例执行完所述任务的一个步骤时,将所述集中存储设备的所述任务执行信息中所记录的该实例执行所述步骤的状态修改为执行完成。 综上所述,本专利技术提出的任务同步方法,利用一集中存储设备存储分布式系统中各实例的任务执行信息,这样,每个实例通过周期性地从该集中存储设备中获取其他实例的任务执行信息,可以及时掌握各实例的步骤执行状态,从而可以实现任务在各实例间的同步执行。同时,本专利技术在新增实例时对原有实例正常运行没有影响,且不需要大幅度地增加通讯接口的开销、应用成本较低、易于实现。 【专利附图】【附图说明】 图1为本专利技术实施例一的流程示意图。 【具体实施方式】 为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本专利技术作进一步地详细描述。 本专利技术的核心思想是:在分布式系统中引入一集中存储设备,用于存储分布式系统中各实例的任务执行信息,每个实例启动后在执行每一步骤时以及步骤执行完毕时都需要修改其在集中存储设备中的任务执行信息,并且每个实例需要周期性地从该集中存储设备中获取其他实例的任务执行信息,以实现任务中各步骤执行的同步。如此,既可避免新增实例时对原有实例正常运行的影响,又不需要大幅度增加通讯接口的开销,应用成本较低、易于实现。 图1为本专利技术实施例一的流程示意图,如图1所示,该实施例主要包括: 步骤101、当执行业务应用任务的每个实例启动后,将本实例的实例信息记录在系统的集中存储设备中。 本步骤中,用于实现实例在集中存储设备的注册,这样,集中存储设备中将保存执行任务的所有实例。当在任务执行过程中,新增新的实例时,直接在集中存储设备中记录该实例的实例信息即可,由于实例启动后会周期性的到集中存储设备中获取当前所执行任务的实例信息以及任务执行信息,因此,可以确保之前已启动的实例可以及时获知新增实例的相关信息,而不需要再进行新增实例的通知以及对已启动的实例进行重启。 所述实例信息可以包括实例的编号、实例的名称等信息。较佳地,还可以包括实例的更新时间,所述更新时间为进行记录所述实例信息的时刻,以供此后进行实例有效性的判断。 步骤102、对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,根据本周期从所述集中存储设备中获取的所述任务的任务执行信息以及当前执行所述任务的有效实例,确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤,并在本实例未执行所确定出的步骤时,启动本实例执行该步骤,在所述集中存储设备中所述任务的任务执行信息中记录相应的步骤执行信息,所述步骤执行信息包括用于指示本实例已执行所述步骤的信息以及用于指示本实例执行所述步骤的状态为执行中的信息。 本步骤中,每个实例启动后,需要周期性地去集中存储设备中获取当前所执行任务的实例信息以及任务的任务执行信息,基于这些信息,可以确定出当前任务的执行情况,即当前执行任务的有效实例有哪些,以及当前任务执行到哪一步了,进而可以基于此确定当前是否需要启动新的步骤的执行,还是需要等待其他实例执行完成本实例最近已执行完成的步骤,从而可以实现任务的同步。 这里,实例在启动执行每个步骤时都要在集中存储设本文档来自技高网...
【技术保护点】
一种任务同步方法,该方法应用于分布式系统中,其特征在于,包括:当执行业务应用任务的每个实例启动后,将本实例的实例信息记录在系统的集中存储设备中;对于当前执行所述任务的每个实例,在每个预设的更新周期到达时,根据本周期从所述集中存储设备中获取的所述任务的任务执行信息以及当前执行所述任务的有效实例,确定出当前未被所有所述有效实例完成的步骤中执行序号最小的步骤,并在本实例未执行所确定出的步骤时,启动本实例执行该步骤,在所述集中存储设备中所述任务的任务执行信息中记录相应的步骤执行信息,所述步骤执行信息包括用于指示本实例已执行所述步骤的信息以及用于指示本实例执行所述步骤的状态为执行中的信息;对于每个所述实例,当该实例执行完所述任务的一个步骤时,将所述集中存储设备的所述任务执行信息中所记录的该实例执行所述步骤的状态修改为执行完成。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈鹏,
申请(专利权)人:北京京东尚科信息技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。