XXL-JOB定时任务调度平台原理

本文介绍了XXL-JOB定时任务调度平台的原理,包括其架构、执行步骤、问题及解决方案。XXL-JOB采用中心化管理,通过MySQL确保集群一致性,利用时间轮实现定时触发任务,并通过DB锁防止集群中多个服务器同时调度。文章还探讨了任务执行器注册、路由、分片执行等问题,并讨论了任务依赖、重复执行、判断任务执行条件以及任务失败处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景概述

业务场景中经常有一些场景需要使用定时任务,比如:

  • 时间驱动的场景:某个时间点发送优惠券,发送短信,取消未支付订单等等。
  • 批量处理数据:批量统计上个月的账单,全量同步商品数据等等。
  • 固定频率的场景:每隔一定时间需要执行一次。

传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:

  • 不支持集群高可用,没有监控、故障告警等。
  • 没有统一管理平台,不支持统计和追踪各个服务节点任务调度的结果等
  • 不支持分布式任务调度:同一个服务多个实例的任务存在互斥时,需要统一的调度。

 

ElasticJob

elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。

ElasticJob-Lite定位是无中心化的分布式定时调度框架,采用zookeeper实现分布式协调,实现任务高可用以及分片。

ElasticJob-Lite Architecture

 

ElasticJob-Cloud提供资源治理、应用分发以及进程隔离等功能。

ElasticJob-Cloud Architecture

ElasticJob-Lite ElasticJob-Cloud
无中心化
资源分配 不支持 支持
作业模式 常驻 常驻 + 瞬时
部署依赖 ZooKeeper ZooKeeper + Mesos

实现原理

1. 作业启动

2. 作业执行

缺点

elasticjob是无中心化的,通过ZooKeeper的选举机制选举出主服务器。如果主服务器挂了,会重新选举新的主服务器。

因此elasticjob具有良好的扩展性和可用性,但是使用和运维有一定的复杂。

 

XXL-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值