当当elastic-job:分布式任务调度框架的10大特性解析

1 下载量 97 浏览量 更新于2024-08-29 收藏 328KB PDF 举报
"新一代分布式任务调度框架:当当elastic-job开源项目的10项特性" 新一代分布式任务调度框架——当当elastic-job,是一个强大的解决方案,旨在解决企业中对于定时任务的需求。在理解elastic-job的特性之前,我们先探讨为什么需要作业(定时任务)。作业和消息传递在某些场景下可以互换,如在队列表处理中,消息中间件的实时性和基于文件的存储效率更高。然而,两者在特定情况下无法替代,例如时间驱动的任务(如定时抓取外部系统价格)和批量处理(如电商与快递公司的月度结算)。 elastic-job的出现是为了统一和优化当当原有的作业系统,这些系统包括Quartz、TBSchedule、Crontab和Perl,各有其局限性。Quartz虽然广泛使用,但对数据处理的定制化不足;TBSchedule的代码老旧,使用timer的缺陷明显,且作业类型单一;Crontab缺乏分布式管理和监控;Perl已不符合公司的Java化策略。 elastic-job的核心特性如下: 1. **分布式调度**:elastic-job支持分布式环境下的任务调度,可以将任务分配到多个节点并行执行,提高了任务处理的效率和系统的扩展性。 2. **弹性扩展**:随着业务的增长,elastic-job能够动态调整任务的执行节点,实现作业的无缝扩缩容。 3. **故障转移和恢复**:如果某个节点故障,任务会自动转移到其他节点执行,保证任务的高可用性。 4. **细粒度控制**:elastic-job允许对每个任务进行精细化的配置,如执行间隔、并发控制等,满足不同场景的需求。 5. **数据分片**:对于需要处理大量数据的任务,elastic-job采用数据分片策略,将大任务拆分成小任务,分发到各个节点执行,提高处理速度。 6. **智能补偿**:系统内置补偿机制,确保即使在异常情况下也能保证任务的正确执行。 7. **简单易用的API**:提供简洁的编程接口,使得开发人员能快速集成和配置任务。 8. **丰富的监控和日志**:具备完善的监控和日志记录功能,方便运维人员跟踪任务状态和排查问题。 9. **良好的社区支持**:作为开源项目,elastic-job拥有活跃的社区,提供及时的技术支持和版本更新。 10. **兼容性**:elastic-job可以与现有的Quartz、Cron等系统集成,降低迁移成本。 elastic-job解决了传统定时任务框架的局限,提供了更强大、灵活且稳定的分布式任务调度方案,尤其适合大规模、高并发的业务场景。通过上述特性,它可以帮助企业在复杂环境中实现定时任务的高效管理和执行,提升系统的整体性能。
2019-07-19 上传
Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。去掉了和dd-job中的监控和ddframe接入规范部分。该项目基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发。       ddframe其他模块也有可独立开源的部分,之前当当曾开源过dd-soa的基石模块DubboX。elastic-job和ddframe关系见下图Elastic-Job 主要功能定时任务: 基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。作业注册中心: 基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。作业分片: 将一个任务分片成为多个小任务项在多服务器上同时执行。弹性扩容缩容: 运行中的作业服务器崩溃,或新增加n台作业服务器,作业框架将在下次作业执行前重新分片,不影响当前作业执行。支持多种作业执行模式: 支持OneOff,Perpetual和SequencePerpetual三种作业模式。失效转移: 运行中的作业服务器崩溃不会导致重新分片,只会在下次作业启动时分片。启用失效转移功能可以在本次作业执行过程中,监测其他作业服务器空闲,抓取未完成的孤儿分片项执行。运行时状态收集: 监控作业运行时状态,统计最近一段时间处理的数据成功和失败数量,记录作业上次运行开始时间,结束时间和下次运行时间。作业停止,恢复和禁用:用于操作作业启停,并可以禁止某作业运行(上线时常用)。被错过执行的作业重触发:自动记录错过执行的作业,并在上次作业完成后自动触发。可参考Quartz的misfire。多线程快速处理数据:使用多线程处理抓取到的数据,提升吞吐量。幂等性:重复作业任务项判定,不重复执行已运行的作业任务项。由于开启幂等性需要监听作业运行状态,对瞬时反复运行的作业对性能有较大影响。容错处理:作业服务器与Zookeeper服务器通信失败则立即停止作业运行,防止作业注册中心将失效的分片分项配给其他作业服务器,而当前作业服务器仍在执行任务,导致重复执行。Spring支持:支持spring容器,自定义命名空间,支持占位符。运维平台:提供运维界面,可以管理作业和注册中心。相关文档下载Release Notes1.0.2接口变更声明何为分布式作业?目录结构说明使用步骤开发指南使用限制运维平台阅读源码编译问题说明实现原理作业分片策略监控快速上手(感谢第三方志愿者 泽伟@心探索科技 提供文档)InfoQ新闻Elastic-Job Wiki (由社区志愿者自由编辑的) 标签:作业调度