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

0 下载量 141 浏览量 更新于2024-08-31 1 收藏 328KB PDF 举报
"新一代分布式任务调度框架:当当elastic-job开源项目的10项特性" 在IT领域,任务调度是系统管理中的重要组成部分,特别是在分布式系统中。本文主要探讨了分布式任务调度框架——当当的elastic-job,它具备10项关键特性,解决了传统定时任务系统的一些痛点。 首先,我们理解为什么需要作业(定时任务)。尽管消息传递在某些场景下可以替代定时任务,例如队列处理,但对于时间驱动的需求,如定时抓取外部系统数据,定时任务是不可或缺的。此外,定时任务适合批量处理数据,尤其在不需要实时响应的业务场景,如月度结算。它们还能实现非实时性处理,比如VIP用户的自动降级,而不需要严格的时间同步。另外,定时任务通常用于系统内部,保持系统的封闭性,而消息中间件更适合于系统间的解耦。 接着,文章提到了当当之前使用的几种作业系统。Quartz作为Java的定时任务标准,虽然能实现高可用,但缺乏分布式并行执行能力。TBSchedule是阿里的开源调度系统,其使用的老式timer有缺陷,作业类型单一,且文档不全。Crontab是系统级别的定时任务工具,但不支持分布式和集中管理。Perl则是遗留系统的一部分,已不符合Java化的策略。 因此,当当开发了elastic-job,原名为dd-job,它是ddframe框架的一部分。elastic-job作为一个专门为分布式环境设计的作业框架,弥补了上述系统的不足,具有以下10项特性: 1. **分布式**:elastic-job支持作业的分布式部署和执行,确保在大规模集群环境下也能有效调度任务。 2. **弹性伸缩**:能够动态调整作业实例数量,适应服务器负载变化,提供良好的扩展性。 3. **故障转移**:当某个作业实例失败或宕机时,能够自动将任务分配给其他正常实例,保证作业的持续执行。 4. **数据一致性**:通过一致性算法确保分布式环境下数据的准确性和完整性。 5. **细粒度控制**:支持对每个作业实例进行单独的启停控制,方便管理和调试。 6. **容错机制**:具备重试、跳过错误、记录日志等错误处理机制,提高系统稳定性。 7. **作业生命周期管理**:支持作业的创建、更新、删除等操作,便于版本管理和维护。 8. **丰富的作业类型**:支持多种作业类型,包括简单作业、脚本作业、Spring Bean作业等,满足多样化需求。 9. **监控和报警**:提供作业运行状态的监控,以及异常时的报警机制,便于及时发现和解决问题。 10. **易用性**:提供简洁的API和配置方式,降低开发和运维的复杂度。 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 (由社区志愿者自由编辑的) 标签:作业调度