大家好,我是mikechen。
分布式定时任务在分布式系统很常见,但是具体什么是分布式任务,分布式定时任务有哪些框架呢?下面一一详解@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
什么是分布式定时任务
分布式定时任务是指将定时任务分布到多个节点上执行,以实现高可用性和可伸缩性的任务调度方式。
分布式定时任务作用
很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。
在分布式系统中,定时任务需要在多个节点上执行,因此需要一种机制来确保任务在各个节点上同步执行,这就是分布式定时任务的作用。
分布式定时任务框架
1.quartz
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。
Quartz提供了丰富的任务调度功能,包括:
- 任务调度:支持按照特定的时间规则或者一次性的执行任务。
- 作业管理:支持添加、删除、暂停、恢复等任务管理操作。
- 分布式任务:支持集群部署,任务调度中心可以自动将任务分发到多个节点执行,提高了任务调度的可用性和容错性。
- 任务监听:支持任务执行前后的监听器,可以在任务执行前后做一些额外的操作。
- 错误处理:支持任务执行过程中的异常处理和错误重试机制。
Quartz 核心类有以下三部分:
- 任务 Job : 需要实现的任务类,实现 execute() 方法,执行后完成任务;
- 触发器 Trigger :包括 SimpleTrigger 和 CronTrigger;
- 调度器 Scheduler :任务调度器,负责基于 Trigger触发器,来执行 Job任务;
三者的关系,如下图所示:
2.elastic-job
Elastic-Job是一款基于Java开发的分布式任务调度框架,Elastic-Job可以用于分布式任务调度和分布式数据处理等场景。
Elastic-Job包含两个独立的子项目:Elastic-Job-Lite和Elastic-Job-Cloud。
Elastic-Job-Lite 定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式任务的协调服务。
Elastic-Job-Lite
而 Elastic-Job-Cloud 使用 Mesos Docker 的解决方案,额外提供资源治理、应用分发以及进程隔离等服务.
3.xxl-job
XXL-Job是大众点评员工于2015年发布的分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
现已开放源代码并接入多家公司线上产品线,架构如下图所示:
XXL-Job将调度行为抽象为调度中心这个公共平台,平台自身不承担业务逻辑,调度中心负责发起调度请求。
任务被抽象成分散的 JobHandler,交由执行器管理,执行器负责接收调度请求并执行对应的 JobHandler 中的业务逻辑。
XXL-Job的特点:
- 轻量级,支持通过Web页面对任务进行动态CRUD操作,操作简单;
- 只依赖数据库作为集群注册中心,接入开发简单,不需要ZK;
- 高可用、解耦、高性能、监控报警、分片、重试、故障转移;
- 团队持续开发,社区活跃;
- 支持后台直接查看每个任务执行实时日志;
除此之外,还有saturn、opencron、antares等分布式定时任务框架。
更多分布式请查看:分布式架构最全详解(万字图文总结)。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/81439.html