查看原文
其他

这些NB哄哄的分布式任务调度系统,你用过几个?

根哥啊 Java之间 2019-04-26

点击上方Java之间”,择“置顶或者星标”

你关注的就是我关心的!

今天在开源中国“任务调度系统/框架”网页上找了好几款比较不错的分布式任务调度系统,地址如下:

https://www.oschina.net/project/tag/327/task-schedule

类别下有非常多的开源项目,其中不乏出自国内外知名企业的优秀大作。接下来,推荐几款优秀和极具潜力的国产开源分布式任务调度系统,希望能对大家有所帮助,让大家了解一下分布式调度系统!

另外,开源中国包括码云是一个很不错的开源项目学习的平台,不仅是国外的还是国内的都有很多不错的开源项目可供我们学习,建议大家经常逛一逛!

分布式调度系统的重要性

分布式调度在互联网企业中占据着十分重要的作用,尤其是电子商务领域,由于存在数据量大、高并发的特点,对数据处理的要求较高,既要保证高效性,也要保证准确性和安全性,相对比较耗时的业务逻辑往往会从中剥离开来进行异步处理。

1、opencron

https://gitee.com/benjobs/opencron

opencron 是一个功能完善且通用的开源定时任务调度系统,拥有先进可靠的自动化任务管理调度功能,提供可操作的 web 图形化管理满足多种场景下各种复杂的定时任务调度,同时集成了 linux 实时监控、webssh 等功能特性。

你是否有定时执行任务计划的需求,需要在linux的crontab里一一定义任务?

  • 需要在每台linux服务器的crontab里一一定义任务;

  • 任务的执行监控太不方便了;

  • 得登录到每台机器查看定时任务的运行结果,机器一多简直是一种灾难;

  • 对于多台机器协同处理一个任务很麻烦,如何保证多台机器上的任务按顺序依次执行?

  • 当任务运行失败,要重新执行,还得重新定义下执行时间,让其重跑,重跑完成了还得改回正常时间;

  • 正在运行的任务要kill掉很麻烦,查看进程然后才能kill ......

2、LTS

https://gitee.com/hugui/light-task-scheduler

LTS,light-task-scheduler,是一款分布式任务调度框架, 支持实时任务、定时任务和 Cron 任务。有较好的伸缩性和扩展性,提供对 Spring 的支持(包括 Xml 和注解),提供业务日志记录器。支持节点监控、任务执行监、JVM 监控,支持动态提交、更改、停止任务。

完整的示例代码:

https://github.com/ltsopensource/lts-examples

3、XXL-JOB

https://gitee.com/xuxueli0323/xxl-job

http://www.xuxueli.com/xxl-job

XXL-JOB 是一个轻量级分布式任务调度框架,支持通过 Web 页面对任务进行 CRUD 操作,支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,支持在线配置调度任务入参和在线查看调度结果。

4、Elastic-Job

https://gitee.com/elasticjob/elastic-job

Elastic-Job 是一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式任务的协调服务。支持分布式调度协调、弹性扩容缩容、失效转移、错过执行作业重触发、并行调度、自诊断和修复等等功能特性。

5、Uncode-Schedule

https://gitee.com/uncode/uncode-schedule

Uncode-Schedule 是基于 ZooKeeper + Quartz / spring task 的分布式任务调度组件,确保每个任务在集群中不同节点上不重复的执行。支持动态添加和删除任务,支持添加 ip 黑名单,过滤不需要执行任务的节点。

功能概述:

  • 基于zookeeper+spring task/quartz/uncode task的分布任务调度系统。

  • 确保每个任务在集群中不同节点上不重复的执行。

  • 单个任务节点故障时自动转移到其他任务节点继续执行。

  • 任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运期。

  • 支持动态添加、修改和删除任务,支持任务暂停和重新启动。

  • 添加ip黑名单,过滤不需要执行任务的节点。

  • 后台管理和任务执行监控。

  • 支持spring-boot,支持单个任务运行多个实例(使用扩展后缀)。

模块机构:

6、Antares

https://github.com/ihaolin/antares

Antares 是一款基于 Quartz 机制的分布式任务调度管理平台,内部重写执行逻辑,一个任务仅会被服务器集群中的某个节点调度。用户可通过对任务预分片,有效提升任务执行效率;也可通过控制台 antares-tower 对任务进行基本操作,如触发,暂停,监控等。

Antares整体架构:

Antares中的任务状态机:

最近热文阅读:

1、StackOverflow: 你没见过的七个最好的Java答案!

2、牛逼哄哄的  RPC 框架,底层到底什么原理?

3、Intellij IDEA神器那些让人爱不释手的小技巧!

4、老板喊你设计一个秒杀系统!

5、对Java意义重大的7个性能指标!

6从程序员的角度深入理解MySQL!

7、MySQL中如何使用流式查询避免数据量过大导致OOM?

关注公众号,你想要的Java都在这里!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存