一种定时任务在多个服务器的并行执行方法和装置制造方法及图纸

技术编号:17733761 阅读:27 留言:0更新日期:2018-04-18 11:18
本发明专利技术提供一种定时任务在多个服务器的并行执行方法和装置,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,减少运维成本,解决单点失效问题,避免业务因单点故障而停滞,服务器宕机时无需人工干预,支持大型任务拆分,应用开发人员只需专注于具体业务开发即可,可用性和扩展性好。本发明专利技术的定时任务在多个服务器的并行执行方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。

A parallel execution method and device for a timed task in multiple servers

The present invention provides a timing device and method of executing tasks in parallel multiple servers, unified configuration can realize the server nodes and make full use of limited computing resources, support to ensure atomicity tasks, reduce maintenance cost, solve the problem of single point failure and avoid business from a single point of failure and stagnation, without manual intervention server downtime, support large split task, application developers only need to focus on specific business development, availability and scalability. The present invention includes timing tasks in a parallel implementation method of multiple servers: receiving each server node submitted task instance request sign, according to a predetermined rule to sign on the task instance, and the sign of success is added to the execution of the task instance makes the corresponding server executes the task instance task list; polling the task instance the task list on the execution state of the completed task instance and return from the task instance is removed from the task list.

【技术实现步骤摘要】
一种定时任务在多个服务器的并行执行方法和装置
本专利技术涉及计算机及其软件
,特别地涉及一种定时任务在多个服务器的并行执行方法和装置。
技术介绍
在大量的应用系统中存在定时任务的场景,例如,在应用系统的实际开发过程中存在大量无需人工干预又需定期执行的系统后台任务,这些定时任务往往不可避免的要考虑到单点问题、协同问题和拆分问题,这就需要一套完整的解决方案去支撑系统的有效运行。利用SpringQuartz可以高效地支持这种定时任务调度场景,让这些后台任务可以在指定的时间按照指定的策略自动化运行。Quartz是一款优秀的企业级任务调度引擎,Spring对其进行了很好地封装,使Quartz高效集成,大大简化了应用开发人员对Quartz特性的使用成本,只需要通过简单的一些配置,便可使应用具备企业级的任务调度特性,从而使开发人员可以高效地将其应用到实际业务中。此外,Java为了降低多线程场景频繁创建和销毁线程所带来的资源消耗,为开发者提供了线程池技术,通过重复利用已创建的线程降低线程创建和销毁造成的消耗,同时提高线程的可管理性,使用线程池可以对多线程进行统一的分配、调优和监控。现有的定时任务调度及执行方案利用了上述SpringQuartz和线程池技术的特性,主要解决方案包括:1、通过使用SpringQuartz在指定的时间频率启动定时任务,通常还会配合线程池技术在单机上完成相应的业务处理;2、为了防止多台服务器的定时任务在同一时间并发执行的问题(并发执行很有可能导致业务处理重复),通常单一业务只会在单一服务器上节点进行配置。在这种情况下,一旦节点宕机,则定时任务将不能正常定时执行;3、同时为了防止单机负载过大,通常会将业务进行分组,通过在不同服务器节点配置不同的Quartz文件来实现。这种方案造成各个服务器节点的配置文件不同,运行的定时任务不同,资源利用率不均匀,需要靠人工经验分配定时任务,服务器配置文件的维护性也不好。可见,现有的解决方案存在诸多缺陷,归纳起来主要体现在如下几个方面:第一,不同线上服务器节点的配置文件不一致,为运维增加了很大的成本和负担,每次上线部署,都需要对不同的服务器逐一仔细核实其业务配置情况;当服务器出现故障时,故障定位和业务恢复的工作带来了额外的时间成本;各个服务器间的资源利用率也不够均衡,存在部分服务器运行压力很大,而部分服务器运行压力很小的问题。第二,存在单点失效问题,一旦服务器出现故障,只能通过相应的业务告警得知,然后再通过人工干预来恢复相应的业务。第三,在单个服务器无论是利用单线程或是利用传统线程池进行多线程业务处理时,当具体业务进行I/O等耗时操作时,往往会造成CPU空转,使得应用程序对计算资源的利用率不高。
技术实现思路
有鉴于此,本专利技术提供一种定时任务在多个服务器的并行执行方法和装置,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,减少运维成本,解决单点失效问题,避免业务因单点故障而停滞,服务器宕机时无需人工干预,支持大型任务拆分,应用开发人员只需专注于具体业务开发即可,可用性和扩展性好。为实现上述目的,根据本专利技术的一个方面,提供了一种定时任务在多个服务器的并行执行方法。一种定时任务在多个服务器的并行执行方法,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。可选地,所述预定规则包括:当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。可选地,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。可选地,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。可选地,所述任务标识具有预设的生存周期,当任务标识的生存周期过期时,该任务标识对应的任务实例被签退。根据本专利技术的另一方面,提供了一种定时任务在多个服务器的并行执行装置。一种定时任务在多个服务器的并行执行装置,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述装置包括:签到模块,用于接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;签退模块,用于轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。可选地,所述预定规则包括:当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。可选地,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。可选地,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。可选地,所述任务标识具有预设的生存周期,所述签退模块还用于:当任务标识的生存周期过期时,对该任务标识对应的任务实例签退。根据本专利技术的技术方案,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到定时时间时在各服务器节点分别启动任务实例,首先接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例,然后轮询任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从任务执行列表中移除该任务实例。使用本专利技术的技术方案,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,应用开发人员和运维人员不再需要维护不同服务器上不同定时任务的分组配置,减少了运维成本,还很好地解决了单点失效问题,避免业务因单点故障而停滞,且服务器宕机时无需人工干预,此外,支持大型任务的拆分,应用开发人员无需关注多线程调度、子任务拆分与合并等问题,而只需专注于具体业务开发即可,并且可用性和扩展性好,当单集群的业务负担加重时只需增加服务器节点即可,而不需对新增节点做个性化的特殊配置。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的定时任务在多个服务器的并行执行方法的主要步骤示意图;图2是根据本专利技术实施例的定时任务在多个服务器并行执行的整体构架示意图;图3是根据本专利技术实施例的fork/join框架的工作原理示意图;图4是根据本专利技术实施例的定时任务在多个服务器并行执行的构架的调用流程示意图;图5是根据本专利技术实施例的定时任务在多个服务器的并行执行装置的主要本文档来自技高网
...
一种定时任务在多个服务器的并行执行方法和装置

【技术保护点】
一种定时任务在多个服务器的并行执行方法,其特征在于,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。

【技术特征摘要】
1.一种定时任务在多个服务器的并行执行方法,其特征在于,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。2.根据权利要求1所述的方法,其特征在于,所述预定规则包括:当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。3.根据权利要求1所述的方法,其特征在于,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。4.根据权利要求2所述的方法,其特征在于,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。5.根据权利要求1所述的方法,其特征在于,所述任务标识具有预设的生存周期,当任务标识的生存周期过期时,该任务标识对应的任务实例被签退。6.一种定时任务在多个服...

【专利技术属性】
技术研发人员:林博辞
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1