任务调度系统之XXL-JOB分享(1).pptx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

任务调度系统之XXL-

JOB分享 任

√任务调度系统有哪些使用场景√任务调度系统能做些什么

√JAVA有哪些定时任务框架可选√不同框架对比和选择

√XXL-JOB简介

√XXL-JOB有哪些功能特性

√XXL-JOB的使用

√XXL-JOB注意事项

目录

Contents

我们思考下面几个业务场景的解决方案:

支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算

12306购票系统,

超过30分钟没有成功支付订单的,进行回收处理

系统需要定时清理日志文件

电商整点抢购,商品价格8点整开始优惠

商品成功发货后,需要向客户发送短信提醒

每天统计前一天的数据并生成报表

类似的业务场景非常多,我

们怎么解决?

很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短信通知客户的业务场景,我们可以在发货成功后发送MQ消息到队列,然后去消费mq消息,发送短信。

但在某些场景下消息和定时任务不能互换:

√时间驱动/事件驱动:内部系统一般可以通过时间来驱动,但涉及到外部系统,则只能使用时间驱动。如爬取外部网站价格,每小时爬一次

√批量处理/逐条处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理。如移动每个月结算我们的话费

√实时性/非实时性:消息中间件能够做到实时处理数据,但是有些情况下并不需要实时,比如:vip升级

√系统内部/系统解耦:定时任务调度一般是在系统内部,而消息中间件可用于两个系统间

为什么我们需要定时任务?

•timer:是一个定时器类,可以通过创建java.util.TimerTask调度任务,在同一个线程中串行执行,相互影响。也就是说,对于同一个Timer里的多个TimerTask任务,如果一个TimerTask任务在执行中,其它TimerTask即使到达

执行的时间,也只能排队等待。因为Timer是串行的,所以后来JDK又推出了ScheduledExecutorService,Timer也基本不再使用。

•ScheduledExecutorService:在JDK1.5新增,基于线程池设计的定时任务类,每个调度任务都会被分配到线程池

中并发执行,互不影响。ScheduledExecutorService解决了Timer串行的问题。缺点没有绝对的日期或者时间。

在日常开发中,我们很少直接使用Timer或ScheduledExecutorService来实现定时任务的需求。主要有几点原因:

•它们仅支持按照指定频率,不直接支持指定时间的定时调度,需要我们结合Calendar自行计算,才能实现复杂时间的调度。例如说,每天、每周五、2019-11-11等等。

•它们是进程级别,而我们为了实现定时任务的高可用,需要部署多个进程。此时需要等多考虑,多个进程下,同一个任务在相同时刻,不能重复执行。

•项目可能存在定时任务较多,需要统一的管理,此时不得不进行二次封装。所以,一般情况下,我们会选择专业的调度任务中间件。

JAVA有哪些定时任务的框架?

在JDK中,

文档评论(0)

gondolaaaa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档