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

文档序号:9672974阅读:来源:国知局
]步骤402:判断所述任务持续存活的时间长度是否大于或等于预设的时间长度阈值,如果是,进入步骤403,否则,进入步骤404。
[0077]其中,预设的时间长度阈值可以是所述任务执行耗时的历史最大值的N倍,N为非零整数。
[0078]步骤403:更改所述任务的当前存活状态为死亡,结束流程。
[0079]步骤404:保持所述任务的当前存活状态为存活,结束流程。
[0080]由上述实施例可以看出,与现有技术相比,本申请技术方案的优点在于:
[0081]除了可以保证多个任务服务器(或任务进程)不会重复处理同一个任务,进而也保证了业务数据的幂等性之外,还保证了当任务处理器(或任务进程)在处理任务的过程中因突然发生故障而无法及时更新任务的当前存活状态,使任务一直处于存活状态时,其它任务处理器(或处理进程)还可以正常地继续处理该任务。
[0082]下面以由三个任务处理器(分别为任务处理器1、2和3)所构成的分布式系统为例,说明三个任务处理器处理任务的方法。假设,任务处理器1、2和3每隔5分钟启动一次任务,并且,由任务处理器1每隔5分钟进行一次任务检测。
[0083]请参阅图5,其为本申请另一个实施例提供的一种分布式系统场景下的任务处理方法的示意图,该方法包括以下步骤:
[0084]步骤511:任务处理器1在1点10分启动任务A。
[0085]其中,任务A表示业务类型A对应的所有任务,其可以为一个任务集合。
[0086]步骤512:任务处理器1从存储服务器中获取任务A的当前存活状态。
[0087]其中,任务A的当前存活状态包括存活和死亡。
[0088]步骤513:任务处理器1根据任务A的当前存活状态确定任务A死亡,将存储服务器中任务A的当前存活状态从死亡标记为存活。
[0089]步骤514:任务处理器1处理任务A。
[0090]步骤515:任务处理器1在处理任务A的过程中,每隔30秒更新存储服务器中任务A的当前存活时间。
[0091]步骤516:任务处理器1在1点15分停止处理任务A (此时任务A还没有全部处理完毕),将存储服务器中任务A的当前存活状态从存活标记为死亡。
[0092]步骤521:任务处理器2在1点12分启动任务A。
[0093]步骤522:任务处理器2从存储服务器中获取任务A的当前存活状态。
[0094]步骤523:任务处理器2根据任务A的当前存活状态确定任务A存活,不处理任务A0
[0095]步骤531:任务处理器3在1点16分启动任务A。
[0096]步骤532:任务处理器3从存储服务器中获取任务A的当前存活状态。
[0097]步骤533:任务处理器3根据任务A的当前存活状态确定任务A死亡,将存储服务器中任务A的当前存活状态从死亡标记为存活。
[0098]步骤534:任务处理器3处理任务A。
[0099]步骤535:任务处理器3在处理任务A的过程中,每隔30秒更新存储服务器中任务A的当前存活时间。
[0100]步骤536:任务处理器3在1点19分处理完所有的任务A,将存储服务器中任务A的当前存活状态从存活标记为死亡。
[0101]步骤541:任务处理器1在1点10分启动检测任务。
[0102]步骤542:任务处理器1从1点10分开始,每隔30秒从存储服务器中获取任务A的当前存活状态和当前存活时间。
[0103]步骤543:如果任务处理器1根据任务A的当前存活状态确定任务A存活,并且根据任务A的当前存活时间确定任务A持续存活的时间长度大于或等于5分钟,将存储服务器中任务A的当前存活状态更改为死亡。
[0104]由上述实施例可以看出,与现有技术相比,本申请技术方案的优点在于:
[0105]当分布式系统中的一个任务处理器(或任务进程)正在处理某任务时,该任务的存活状态就会标记为存活,此时,如果有其它的任务处理器(或任务进程)也想要处理该任务,根据存活状态就可以确定该任务为存活,进而就不会再去处理该任务。当该任务处理器(或任务进程)处理完该任务时,该任务的存活状态就会标识为死亡,此时,如果有其它的任务处理器(或任务进程)也想要处理该任务,根据存活状态就可以确定该任务为死亡,就可以处理该任务。保证多个任务服务器(或任务进程)不会重复处理同一个任务,进而也保证了业务数据的幂等性。
[0106]另外,还保证了当任务处理器(或任务进程)在处理任务的过程中因突然发生故障而无法及时更新任务的当前存活状态,使任务一直处于存活状态时,其它任务处理器(或处理进程)还可以正常地继续处理该任务。
[0107]装置实施例
[0108]与上述一种分布式系统中的任务处理方法相对应,本申请实施例还提供了一种分布式系统中的任务处理装置。请参阅图6,其为本申请一个实施例提供的一种分布式系统中的任务处理装置的结构框图,该装置包括第一判断模块601和任务处理模块602。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
[0109]第一判断模块601,用于在启动任务之后且处理所述任务之前,判断所述任务的当前存活状态是否为存活;
[0110]任务处理模块602,用于如果所述第一判断模块601的判断结果为是,不处理所述任务,如果所述第一判断模块601的判断结果为否,先将所述任务的当前存活状态从死亡标记为存活,再处理所述任务,并在处理完所述任务后,将所述任务的当前存活状态从存活标记为死亡。
[0111]在本申请的一个优选实施方式中,如图7所示,在图6所示的结构的基础之上,该装置还包括:存活时间更新模块603a,用于在将所述任务的当前存活状态从死亡标记为存活后,定时更新所述任务的当前存活时间。
[0112]在本发明的另一个优选实施方式中,如图8所示,该装置进一步还包括:
[0113]第二判断模块604a,用于定时判断所述任务的当前存活状态是否为存活;
[0114]第三判断模块605a,用于如果所述第二判断模块的判断结果为是,进一步判断所述任务持续存活的时间长度是否大于或等于预设的时间长度阈值;
[0115]状态修正模块606a,用于如果所述第三判断模块的判断结果为是,更改所述任务的当前存活状态为死亡,如果所述第三判断模块的判断结果为否,保持所述任务的当前存活状态为存活。
[0116]在本发明的一个优选实施方式中,如图9所示,在图6所示的结构的基础之上,还装置还包括:
[0117]第四判断模块603b,用于在启动任务之前,判断预设的工作周期是否到达;
[0118]启动模块604b,用于如果所述第四判断模块的判断结果为是,自动启动所述任务,如果所述第四判断模块的判断结果为否,不启动所述任务。
[0119]在本发明的一个优选实施方式中,如图10所示,第一判断模块601包括:
[0120]读取子模块6011,用于读取保存在存储服务器中的用于指示所述任务的当前存活状态的标识;
[0121]识别子模块6012,用于根据所述标识确定所述任务的当前存活状态是否为存活。
[0122]在本申请的另一个优选实施方式中,每种类型下的任务在所述存储服务器上的保存唯个所述标识。
[0123]由上述实施例可以看出,与现有技术相比,本申请技术方案的优点在于:
[0124]当分布式系统中的一个任务处理器(或任务进程)正在处理某任务时,该任务的存活状态就会标记为存活,此时,如果有
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1