3千字带你搞懂XXL-JOB任务调度平台
简介: 一篇文章带你认识分布式任务调度平台XXL-JOB! 思维导图 一、概述 在平时的业务场景中,经常有一些场景需要使用定时任务,比如: 时间驱动的场景:某个时间点发送优惠券,发送短信等等。 批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。 固定频率的场景:每隔5分钟需要执行一次。 所以定时任务在平时开发中并不少见,而且对于现在快速消费的时代,每天都需要发送各种推送,消息都需要依赖定时任务去完成,应用非常广泛。 二、为什么需要任务调度平台 在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题: 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等 而且在现在分布式的架构中,有一些场景需要分布式任务调度: 同一个服务多个实例的任务存在互斥时,需要统一的调度。 任务调度需要支持高可用、监控、故障告警。 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。 显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。 elasticjob由当当网开源,目前github有6.5k的Star,使用的公司在官网登记有76家。 跟xxl-job不同的是, elasticjob是采用zookeeper实现分布式协调 ,实现任务高可用以及分片。