首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

众多Java开源定时任务项目集合,你们肯定用得上。

定时处理任务是非常常见的场景,比如,定时给女神推消息,叫她起床,提醒她喝水,当然这场景一点都不重要,重要的是,我们每天要定时跑数据、定时同步数据、定时给领导推送日报等等。这时候,我们就需要一个定时任务系统来帮我们简便、快捷的处理那些场景。这里及分享一些我们用得上的开源定时任务项目。

xxl-job

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。产品开源免费,并且将持续提供免费的社区技术支持。个人或企业内部可自由的接入和使用。

主要功能:

简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;

动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;

调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;

执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA;

注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;

弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;

触发策略:提供丰富的任务触发策略,包括:Cron触发、固定间隔触发、固定延时触发、API(事件)触发、人工触发、父子任务触发;

调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略、立即补偿触发一次等;

阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;

任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;

任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;

任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;

路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;

分片广播任务:执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;

动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。

故障转移:任务路由策略选择”故障转移”情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。

任务进度监控:支持实时监控任务进度;

Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志;

GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。

脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;

命令行任务:原生提供通用命令行任务Handler(Bean任务,”CommandJobHandler”);业务方只需要提供命令行即可;

任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;

一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;

自定义任务参数:支持在线配置调度任务入参,即时生效;

调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;

数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;

邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;

推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;

运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;

全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;

跨语言:调度中心与执行器提供语言无关的 RESTful API 服务,第三方任意语言可据此对接调度中心或者实现执行器。除此之外,还提供了 “多任务模式”和“httpJobHandler”等其他跨语言方案;

国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文;

容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用;

线程池隔离:调度线程池进行隔离拆分,慢任务自动降级进入”Slow”线程池,避免耗尽调度线程,提高系统稳定性;

用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色;

权限控制:执行器维度进行权限控制,管理员拥有全量权限,普通用户需要分配执行器权限后才允许相关操作;

代码地址:https://github.com/xuxueli/xxl-job.git

DolphinScheduler

DolphinScheduler是一个分布式易扩展,具有强大的DAG可视化界面工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用,

在一分钟内创建你的工作流程 ,通过拖拉拽的工作流创建方式提高效率

高并发、高吞吐量、低延迟和稳定地执行百万个量级任务

支持跨项目和跨工作流程的任务依赖,支持Kill、暂停和恢复操作,每个任务都可以修改输出参数,并将其传递给后续任务

支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、oceanbase、postgresql、hive、sparksql)、Python、Sub_Process、Procedure 等

支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计

支持多租户、国际化

代码地址:https://github.com/apache/dolphinscheduler.git

elasticjob

ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。 它的各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署。

主要功能:

弹性调度:支持任务在分布式场景下的分片和高可用,能够水平扩展任务的吞吐量和执行效率,任务处理能力随资源配备弹性伸缩

资源分配:在适合的时间将适合的资源分配给任务并使其生效,相同任务聚合至相同的执行器统一处理,动态调配追加资源至新分配的任务

作业治理:失效转移,错过作业重新执行,自诊断修复

作业依赖(TODO):基于有向无环图(DAG)的作业间依赖,基于有向无环图(DAG)的作业分片间依赖

作业开放生态:可扩展的作业类型统一接口,丰富的作业类型库,如数据流、脚本、HTTP、文件、大数据等,易于对接业务作业,能够与 Spring 依赖注入无缝整合

可视化管控端:作业管控端,作业执行历史数据追踪,注册中心管理

代码地址:https://github.com/apache/shardingsphere-elasticjob.git

PowerJob

PowerJob(原OhMyScheduler)是全新一代分布式调度与计算框架,能让您轻松完成作业的调度与繁杂任务的分布式计算

主要功能:

使用简单:提供前端Web界面,允许开发者可视化地完成调度任务的管理(增、删、改、查)、任务运行状态监控和运行日志查看等功能。

定时策略完善:支持CRON表达式、固定频率、固定延迟和API四种定时调度策略。

执行模式丰富:支持单机、广播、Map、MapReduce四种执行模式,其中Map/MapReduce处理器能使开发者寥寥数行代码便获得集群分布式计算的能力。

DAG工作流支持:支持在线配置任务依赖关系,可视化得对任务进行编排,同时还支持上下游任务间的数据传递

执行器支持广泛:支持Spring Bean、内置/外置Java类、Shell、Python等处理器,应用范围广。

运维便捷:支持在线日志功能,执行器产生的日志可以在前端控制台页面实时显示,降低debug成本,极大地提高开发效率。

依赖精简:最小仅依赖关系型数据库(MySQL/Oracle/MS SQLServer…),扩展依赖为MongoDB(用于存储庞大的在线日志)。

高可用&高性能:调度服务器经过精心设计,一改其他调度框架基于数据库锁的策略,实现了无锁化调度。部署多个调度服务器可以同时实现高可用和性能的提升(支持无限的水平扩展)。

故障转移与恢复:任务执行失败后,可根据配置的重试策略完成重试,只要执行器集群有足够的计算节点,任务就能顺利完成。

代码地址:https://github.com/PowerJob/PowerJob.git

bk-job

蓝鲸作业平台(Job)是一套腾讯出品的运维脚本管理系统,具备海量任务并发处理能力。除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现跨系统调度自动化。

主要功能:

快速执行:提供临时性且多变的快速一次性操作入口,用完即走

任务编排:对于重复性的操作组合,可以通过编排功能将其沉淀为“作业”,方便管理和使用

定时执行:支持用户按业务逻辑诉求设置周期性或一次性的定期执行计划

脚本管理:将脚本以云化模式统一管理,更好的支持作业编排和周边系统调度的灵活度

账号管理:管理服务器OS的执行账户,如Linux的 root,Windows的 administrator 等等

消息通知:满足业务按管理需求设置任务不同状态的执行结果消息通知

文件源管理:开放文件源对接插件能力,满足从不同文件系统类型拉取文件并传输的诉求

运营分析:提供平台的运营统计数据展示,助力管理员更全方位的了解平台的运行情况

平台管理:丰富的平台管理员工具,包括但不仅限于信息更改、消息渠道设置、高危语句检测规则、功能限制设置、公共脚本管理、后台服务状态展示等等

代码地址:https://github.com/TencentBlueKing/bk-job.git

kestra

Kestra是一个可无限扩展的编排和调度的开源平台,可创建、运行、调度和监控数百万条复杂的管道。

代码地址:https://github.com/kestra-io/kestra.git

QuartZ

Quartz 是一个基于Java开源的作业调度框架,能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB 作业预构 建,JavaMail 及其它,支持 cron-like 表达式等.

代码地址:https://github.com/quartz-scheduler/quartz.git

虽然强大的项目很多,但是,合适自己的才是最好的。朋友们,赶紧去大显身手吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230404A07I7000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券