分布式多任务调度的初探

一、Quartz

在java编程中,常用的比较出名的任务调度工具是Quartz,该工具提供丰富的接口来帮助我们实现基于Cron Expression的定时任务以及按照固定频率执行任务等。在运行过程中,该工具会创建线程池,所有任务会在线程池中运行,注意默认的线程池中线程数量有限,仅有10个线程,可以通过程序修改线程池的容量。当提交的job多于线程池的容量的时候,多余的job会在等待队列里进行等待,如果有一些提交的job属于长时间运行或者阻塞的任务,这样的job多于线程池的容量的时候就会导致一些job长时间处在等待队列里不能运行,这时候调度器处于阻塞状态。针对这个问题,可以采用增加线程池的容量的方法处理。

Quartz也支持分布式的实现,任务状态信息都存储在数据库中,基于数据库引擎及 High-Available 的策略(集群的一种策略)自动协调每个节点的 Quartz。不过Quartz在实现过程中效率相对低下,因为对于任务量比较大的场景下,会涉及到频繁的任务切换,进而会涉及频繁的加锁和解锁,甚至会带来集群间的主线程等待。

 

 

二、Elastic-Job,LTS, Niubi-Job

    这三者的定位就是要执行高效的分布式任务调度,这三者都是开源的,可以直接从Github上找到,都有一定的文档参考。目前对这三者处于了解阶段,后续如果有进一步发现,再进行进一步的总结。

 

LTS: https://github.com/qq254963746/light-task-schedule

Elastic-Job: https://github.com/dangdangdotcom/elastic-job

Niubi-Job: https://github.com/xiaolongzuo/niubi-job


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值