写点什么

当当开源 elastic-job,分布式作业调度框架

2015 年 9 月 21 日

当当近期开源了分布式作业调度框架 elastic-job 项目。

elastic-job 是当当内部应用框架 ddframe 中 dd-job 的作业模块中分离出来的分布式弹性作业框架。去掉了 dd-job 中监控和 ddframe 接入规范部分。ddframe 其他模块也有可独立开源的部分,之前当当曾开源过 dd-soa 的基石模块 DubboX。

elastic-job 和 ddframe 关系见下图:

(点击查看大图)

Elastic-job 的主要包括以下功能。

  1. 定时任务:基于成熟的定时任务作业框架 Quartz cron 表达式执行定时任务。
  2. 作业注册中心:基于 Zookeeper 和其客户端 Curator 实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。
  3. 作业分片:将一个任务分片成为多个小任务项在多服务器上同时执行。
  4. 弹性扩容缩容:运行中的作业服务器崩溃,或新增加 n 台作业服务器,作业框架将在下次作业执行前重新分片,不影响当前作业执行。
  5. 支持多种作业执行模式:支持 OneOff(类似 Quartz 原生作业),Perpetual(类似 TbSchedule 作业)和 SequencePerpetual(类似 TbSchedule 和 kafka 的合并,但处理时维持分片顺序)三种作业模式。
  6. 失效转移:运行中的作业服务器崩溃不会导致重新分片,只会在下次作业启动时分片。启用失效转移功能可以在本次作业执行过程中,监测其他作业服务器空闲,抓取未完成的孤儿分片项执行。
  7. 运行时状态收集:监控作业运行时状态,统计最近一段时间处理的数据成功和失败数量,记录作业上次运行开始时间,结束时间和下次运行时间。
  8. 作业停止,恢复和禁用:用于操作作业启停,并可以禁止某作业运行(上线时常用)。
  9. 被错过执行的作业重触发:自动记录错过执行的作业,并在上次作业完成后自动触发。可参考 Quartz 的 misfire。
  10. 多线程快速处理数据:使用多线程处理抓取到的数据,提升吞吐量。
  11. 幂等性:重复作业任务项判定,不重复执行已运行的作业任务项。由于开启幂等性需要监听作业运行状态,对瞬时反复运行的作业对性能有较大影响。
  12. 容错处理:作业服务器与 Zookeeper 服务器通信失败则立即停止作业运行,防止作业注册中心将失效的分片分项配给其他作业服务器,而当前作业服务器仍在执行任务,导致重复执行。
  13. Spring 支持:支持 spring 容器,自定义命名空间,支持占位符。
  14. 运维平台:提供运维界面,可以管理作业和注册中心。

上面列出的功能已在当当内部稳定使用,现在开源,供大家参考和指正。也希望感兴趣的朋友也来为 elastic-job 贡献更多的改进。未来也将会开源更多的 ddframe 子模块。

注:elastic-job 严格遵循 Apache 2.0 许可证的要求。

附:ddframe 简介

ddframe 是针对技术部 Java 体系提供的统一应用开发框架。目的:

  1. 分离技术和业务,封装技术细节,将应用开发人员的精力集中在业务开发上;
  2. 可快速配置启动,降低新项目搭建框架的成本;
  3. 统一框架,将项目分为业务 + 框架 + 云平台 + 治理;
  4. 提供统一的编码,配置,监控,日志的标准和规范;
  5. 组件可插拔,不强制业务开发人员使用框架的全部内容;
  6. 灵活的提供定制化功能,框架不限制引入其他技术组件;
  7. 模板代码自动化生成,降低书写难度;
  8. 提供独立的工具箱和分布式技术组件产品;
  9. 推动 SOA 以及微服务进程。

感谢丁晓昀对本文的审校。

2015 年 9 月 21 日 19:1124275
用户头像

发布了 24 篇内容, 共 22.3 次阅读, 收获喜欢 101 次。

关注

评论

发布
暂无评论
发现更多内容

源码解析Synchronized同步方法的八种使用场景,收藏

996小迁

Java 源码 架构 面试 synchronized

KKR四币连发挖矿系统软件APP开发

开發I852946OIIO

系统开发

区块链商城系统开发模式制作

系统开发咨询:I76-883I-5I52 邓森

堪称完美!阿里架构师亲自手撕”Spring Boot实战笔记“用60个案例给你整的明明白白

比伯

Java 编程 程序员 架构 技术宅

源码解析Synchronized同步方法的八种使用场景,收藏

小Q

Java 学习 架构 面试 多线程

字节跳动的这份《算法中文手册》火了,完整版PDF开放下载!不少小伙伴靠这份指南成功掌握了算法的核心技能,成功拿到了 BATJ等大厂offer。

Java成神之路

Java 程序员 架构 面试 编程语言

完全懵掉的电话面试

escray

面经 面试经历 101次面试 七日更 十日谈

iOS 崩溃分析

ios 崩溃分析

基于App SDK和API搭建无人自习室等无人场景

IoT云工坊

物联网 智慧琴房 24小时无人自习室 24小时自助游戏厅 共享办公室

anyRTC加持AI,打造下一代实时音视频引擎

anyRTC开发者

人工智能 android 音视频 WebRTC RTC

Spring Cloud微服务实战

田维常

微服务

必须清除互联网世界的毒瘤:网络谣言背后存在病态心理

石头IT视角

带宽、延时、吞吐率、PPS 这些都是啥?

小林coding

Linux 操作系统 网络

阿里工作6年,熬到P7就剩这份学习笔记了(汇聚六年经验总结),已助朋友拿到7个Offer

Java成神之路

Java 程序员 架构 面试 编程语言

【年终总结】mybatis常见注解

田维常

mybatis

一文带你了解传统手工特征的骨龄评估方法的发展历史

华为云开发者社区

方法 骨龄 评估

App性能测试揭秘(Android篇)

应用研发平台EMAS

阿里云 软件测试 测试 性能测试 云性能测试

被阿里、腾讯、华为追捧为最牛逼的 Java 框架你知道是什么吗?

Java架构师迁哥

阿里技术官亲荐“998页的应届生面试手册”看完才发现,原来求职也没那么难!

比伯

Java 程序员 面试 编程语言 计算机

干货时间:聊聊DevOps下的技术系列之契约测试

华为云开发者社区

DevOps 测试 交互

还记得你的时间胶囊吗?

熊斌

个人成长 七日更

源码输出纯净版SSM架构,收藏直接CV使用它不香吗?

小Q

Java 学习 编程 面试 ssm

5. 穿过拥挤的人潮,Spring已为你制作好高级赛道

YourBatman

Spring Framework 类型转换 Converter

SQL:我为什么慢你心里没数吗?

Java架构师迁哥

2021年Java程序员请先把这几项硬技能熟悉掌握,再想着跳槽拿高薪。

Java成神之路

Java 程序员 架构 面试 编程语言

软件测试(功能、接口、性能、自动化)详解

测试人生路

软件测试

裸辞在家闭关,啃下这些面试笔记,终,拿到字节跳动4面offer

Crud的程序员

Java java面试 程序员面试

等不到明年金三银四了!五面滴滴之路,爆砍37K+16薪Offer

Java架构追梦

Java 学习 架构 面试 滴滴

BitQy交易所软件系统开发|BitQy交易所APP开发

开發I852946OIIO

秒杀系统设计的挑战和问题(转载)

jorden wang

物联网打工人必备:LiteOS Studio图形化调测能力

华为云开发者社区

互联网 LiteOS 打工人

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

当当开源elastic-job,分布式作业调度框架-InfoQ