分布式系统中的任务处理方法和装置的制造方法

文档序号:9672974阅读:348来源:国知局
分布式系统中的任务处理方法和装置的制造方法
【技术领域】
[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]当分布式系统中的一个任务处理器(或任务进程)正在处理某任务时,该任务的存活状态就会标记为存活,此时,如果有其它的任务处理器(或任务进程)也想要处理该任务,根据存活状态就可以确定该任务为存活,进而就不会再去处理该任务。当该任务处理器(或任务进程)处理完该任务时,该任务的存活状态就会标识为死亡,此时,如果有其它的任务处理器(或任务进程)也想要处理该任务,根据存活状态就可以确定该任务为死亡,就可以处理该任务。保证多个任务服务器(或任务进程)不会重复处理同一个任务,进而也保证了业务数据的幂等性。
【附图说明】
[0041]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0042]图1示意性地示出了本申请的实施方式可以在其中实施的示例性应用场景;
[0043]图2为本申请一个实施例提供的一种分布式系统中的任务处理方法的流程图;
[0044]图3为本申请另一个实施例提供的一种分布式系统中的任务处理方法的流程图;
[0045]图4为本申请另一个实施例提供的一种分布式系统中的任务处理方法的流程图;
[0046]图5为本申请另一个实施例提供的一种分布式系统场景下的任务处理方法的示意图;
[0047]图6为本申请一个实施例提供的一种分布式系统中的任务处理装置的结构框图;
[0048]图7为本申请另一个实施例提供的另一种分布式系统中的任务处理装置的结构框图;
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1