[发明专利]一种定时任务在多个服务器的并行执行方法和装置在审
申请号: | 201610885998.7 | 申请日: | 2016-10-11 |
公开(公告)号: | CN107918556A | 公开(公告)日: | 2018-04-17 |
发明(设计)人: | 林博辞 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 中原信达知识产权代理有限责任公司11219 | 代理人: | 张一军,姜劲 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 定时 任务 服务器 并行 执行 方法 装置 | ||
技术领域
本发明涉及计算机及其软件技术领域,特别地涉及一种定时任务在多个服务器的并行执行方法和装置。
背景技术
在大量的应用系统中存在定时任务的场景,例如,在应用系统的实际开发过程中存在大量无需人工干预又需定期执行的系统后台任务,这些定时任务往往不可避免的要考虑到单点问题、协同问题和拆分问题,这就需要一套完整的解决方案去支撑系统的有效运行。利用Spring Quartz可以高效地支持这种定时任务调度场景,让这些后台任务可以在指定的时间按照指定的策略自动化运行。
Quartz是一款优秀的企业级任务调度引擎,Spring对其进行了很好地封装,使Quartz高效集成,大大简化了应用开发人员对Quartz特性的使用成本,只需要通过简单的一些配置,便可使应用具备企业级的任务调度特性,从而使开发人员可以高效地将其应用到实际业务中。
此外,Java为了降低多线程场景频繁创建和销毁线程所带来的资源消耗,为开发者提供了线程池技术,通过重复利用已创建的线程降低线程创建和销毁造成的消耗,同时提高线程的可管理性,使用线程池可以对多线程进行统一的分配、调优和监控。
现有的定时任务调度及执行方案利用了上述Spring Quartz和线程池技术的特性,主要解决方案包括:
1、通过使用Spring Quartz在指定的时间频率启动定时任务,通常还会配合线程池技术在单机上完成相应的业务处理;
2、为了防止多台服务器的定时任务在同一时间并发执行的问题(并发执行很有可能导致业务处理重复),通常单一业务只会在单一服务器上节点进行配置。在这种情况下,一旦节点宕机,则定时任务将不能正常定时执行;
3、同时为了防止单机负载过大,通常会将业务进行分组,通过在不同服务器节点配置不同的Quartz文件来实现。这种方案造成各个服务器节点的配置文件不同,运行的定时任务不同,资源利用率不均匀,需要靠人工经验分配定时任务,服务器配置文件的维护性也不好。
可见,现有的解决方案存在诸多缺陷,归纳起来主要体现在如下几个方面:
第一,不同线上服务器节点的配置文件不一致,为运维增加了很大的成本和负担,每次上线部署,都需要对不同的服务器逐一仔细核实其业务配置情况;当服务器出现故障时,故障定位和业务恢复的工作带来了额外的时间成本;各个服务器间的资源利用率也不够均衡,存在部分服务器运行压力很大,而部分服务器运行压力很小的问题。
第二,存在单点失效问题,一旦服务器出现故障,只能通过相应的业务告警得知,然后再通过人工干预来恢复相应的业务。
第三,在单个服务器无论是利用单线程或是利用传统线程池进行多线程业务处理时,当具体业务进行I/O等耗时操作时,往往会造成CPU空转,使得应用程序对计算资源的利用率不高。
发明内容
有鉴于此,本发明提供一种定时任务在多个服务器的并行执行方法和装置,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,减少运维成本,解决单点失效问题,避免业务因单点故障而停滞,服务器宕机时无需人工干预,支持大型任务拆分,应用开发人员只需专注于具体业务开发即可,可用性和扩展性好。
为实现上述目的,根据本发明的一个方面,提供了一种定时任务在多个服务器的并行执行方法。
一种定时任务在多个服务器的并行执行方法,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。
可选地,所述预定规则包括:当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。
可选地,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。
可选地,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。
可选地,所述任务标识具有预设的生存周期,当任务标识的生存周期过期时,该任务标识对应的任务实例被签退。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610885998.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种机械式重力平衡装置
- 下一篇:快速松紧安全平台