springcloud:xxl-job的任务触发机制及调度过期策略

这篇具有很好参考价值的文章主要介绍了springcloud:xxl-job的任务触发机制及调度过期策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.引言

我们都会用xxl-job,但很少有人能够说清楚xxl-job的任务触发机制,面临任务阻塞、服务重启如何处理任务,本期我们就来一起看看xxl-job的任务触发机制

1. 调度过期策略

我们在配置策略时可以看到有一个调度过期策略配置,也许你知道这是任务超期时的处理规则,但你有没有想过什么时候任务会过期?

springcloud:xxl-job的任务触发机制及调度过期策略

定时任务执行时,如果服务重启、服务器资源不足,上次调度阻塞这些原因都会导致当前任务错过触发时间。

而xxl-job对此的处理方式是两种:

  • 忽略:如果过期超过了5s,则忽略本次,从当前时间开始计算下次触发时间

这种配置适用于,下次执行可以补救上次任务未执行,比如定时更新数据库,如果上次没更新,那么下次一起更新即可

  • 立即触发一次:如果超期没有超过5s,则立即执行一次任务,并从当前时间开始计算下次触发时间

这种配置适用于尽可能期望每次任务都能触发的任务,但需要考虑到,如果超期过了5s,任务仍然不会执行

2. 任务调度步骤

xxl-job的任务调度整体分为3步执行:
1、服务端(调度器) 向 客户端(执行器)发送http调度请求
2、执行器执行定时任务
3、执行器http回传调度器执行结果,调度器接收执行结果的服务实际上是一组api接口,即开放了一组回调接口

3. 任务触发机制

xxl-job的任务触发早期是通过Quartz来进行的,目前已经更新为时间轮管理

1、首先会有一个任务表来记录所有要执行的任务及时间点

2、单独启动一个scheduleThread线程来从任务表获取近5s要执行的任务,获取时如果该任务的触发时间点已经达到,则立即执行,否则就将任务时间点除以1000,再60求余,放到时间轮中

springcloud:xxl-job的任务触发机制及调度过期策略

3、这个所谓的时间轮,其实就是一个Map,key是0~60,value是任务ID集合,即Map<Integer, List<Integer>> ringData,为保证线程安全,使用了ConcurrentHashMap

springcloud:xxl-job的任务触发机制及调度过期策略

4、另外还有一个线程ringThread会不断用当前时间60求余,然后从时间轮中取出对应key的任务列表,进行执行。如此实现了定时任务的触发。

springcloud:xxl-job的任务触发机制及调度过期策略

上述逻辑,在源码JobScheduleHelper类中可以看到

springcloud:xxl-job的任务触发机制及调度过期策略

5、综上,xxl-job的定时任务的触发,核心在于时间轮上的处理文章来源地址https://www.toymoban.com/news/detail-452955.html

到了这里,关于springcloud:xxl-job的任务触发机制及调度过期策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • xxl-Job分布式任务调度 入门

    我们可以先思考一下业务场景的解决方案: 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。 某银行系统需要在信用卡到期还款日的前三天进行短信提醒。 某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。 12306会根据车次的不同,设置某

    2024年02月03日
    浏览(88)
  • 分布式定时任务调度xxl-job

    Quartz中最重要的三个对象:Job(作业)、Trigger(触发器)、Scheduler(调度器)。 xxl-job的调度原理:调度线程在一个while循环中不断地获取一定数量的即将触发的Trigger,拿到绑定的Job,包装成工作线程执行。 当然,不管在任何调度系统中,底层都是线程模型。如果要自己写一个

    2024年03月10日
    浏览(43)
  • XXL-JOB 任务调度中心 后台反弹getshell

     访问漏洞场景,使用弱口令admin/123456,进入后台 在任务管理处新增 运行模式一定要选shell模式,其他的地方随便填   保存之后点击操作 选择GLUE IDE,我们可以通过DNSlog判断一下 然后我们保存,然后执行一次 刷新之后,出现下图情况,证明设备出网 DNSLog Platform   那我们就可

    2024年02月04日
    浏览(30)
  • XXL-Job:提升任务调度效率的开源利器

    XXL-Job是由知名技术公司XXL-Tech团队开发和维护的,经过多年的发展和应用实践,已在众多企业和项目中获得广泛认可。它的特性和功能旨在简化任务调度的管理和执行,提高开发效率。 在本文中,我们将探讨XXL-Job的关键特点,包括其分布式任务调度能力、任务监控和管理功

    2024年02月13日
    浏览(30)
  • Java -- XXL-JOB分布式任务调度平台

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用 xxl是xxl-job的开发者大众点评的【许雪里】名称的拼音开头 官网地址 分布式任务调度平台XXL-JOB 文档地址 中文文档 English Docu

    2024年02月11日
    浏览(35)
  • XXL-JOB 任务调度中心 后台任意命令执行漏洞

    在日常开发中,经常会用定时任务执行某些不紧急又非常重要的事情,例如批量结算,计算当日的订单量,当日的成本收入等。当存在大量定时任务的时候,任务的管理也会成为一个比较头痛的问题。xxl-job,就是一个比较成熟的分布式任务调度平台。XXL-JOB 任务调度中心系统

    2024年02月08日
    浏览(33)
  • 【分布式任务调度】(一)XXL-JOB调度中心集群部署配置

    XXL-JOB是一款轻量级的分布式任务调度中间件,默认支持6000个定时任务,如果生产环境的任务数量在这个范围内,可以选择使用 XXL-JOB。 XXL-JOB由Quartz这款老牌的任务调度中间件演化而来,相对来说,具备以下优势: 操作更简单,学习成本更低 使用异步化调度,性能更好 有配

    2024年02月16日
    浏览(33)
  • 【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目

                                    💧 分布式任务调度平台 X X L − J O B 急速入门:从零开始将 X X L − J O B 接入到自己的项目 color{#FF1493}{分布式任务调度平台 XXL-JOB 急速入门:从零开始将 XXL-JOB 接入到自己的项目} 分布式任务调度平台 XX L − J OB 急速入门:从零

    2024年02月14日
    浏览(35)
  • spring boot + xxl-job 分布式任务调度

    1、任务调度 1.1、什么是任务调度 我们可以先思考一下下面业务场景的解决方案: 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。 某财务系统需要在每天上午10点前结算前一天的账单数据,统计汇总。 某电商平台每天凌晨3点,要对订单中的无效订单进行

    2024年02月09日
    浏览(48)
  • XXL-JOB中间件【实现分布式任务调度】

    目录 1:XXL-JOB介绍 2:搭建XXL-JOB 2.1:调度中心 2.2:执行器 2.3:执行任务 3:分片广播 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 官网:https://www.xuxueli.com/xxl-

    2024年02月03日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包