ElasticJob 目前已经成为 Apache ShardingSphere 的唯一一个子项目,也是 Apache 软件基金会的非顶级正式项目。由于 Apache ShardingSphere 是 Apache 的顶级项目,因此旗下的 ElasticJob 是无需经过 Apache 孵化器的。
社区数据
ElasticJob 社区重启已经超过了一个月的时间,在此期间,ElasticJob 社区已大变模样。
5 月 27 至 6 月 27 这一个月的数据如下:
- 合并 86 个 Pull Requests;
- 开启 12 个 Issue;
- 关闭 47 个 Issue;
- 增加 52,677 行代码;
- 删除 114,417 行代码;
- 共计 24 名贡献者;
ElasticJob 目标设定
ElasitcJob 远景目标
- 为 Apache ShardingSphere 的数据调度模块赋能,数据调度主要包括数据的弹性迁移和容量调整等功能。
- 独立成为 Apache 顶级项目。当 ElasticJob 社区和 Apache ShardingSphere 社区同样活跃且多元化,并且具备足够的的贡献者和提交者时,我们愿意讨论将其升级为 Apache 顶级项目。
ElasitcJob 开发目标
- 内核类。目前 ElasticJob 参照 Apache ShardingSphere 的 SPI 方式在拓展,在微内核 + 可插拔的架构设计方向前进中。内核提升还包括调度器和执行器分离,任务 DAG(有向无环图)依赖等;
- 生态类。包括作业执行轨迹统计,作业控制台后端,作业类型的增加,注册中心多类型适配等工作,目前已将生态类模块与内核分离;
- 前端类。ElasticJob 的控制台页面目前使用 jQuery 进行开发,希望换成现在流行的 vue 框架使前后端分离,并提升操作界面以及监控可视化的能力。
ElasitcJob 社区目标
- 希望对 ElasticJob 感兴趣的同学,能够在各自的渠道都宣传。让更多的人知道 ElasticJob 社区重启的资讯,以吸引更多的贡献者加入社区;
- 整理并回答社区遗留 Issue,将这两年来累积的技术债务逐渐偿还;
- 整理文档,包括现有文档的完善和英文文档翻译。
ElasticJob 未来规划
未来的 ElasitcJob 会朝着更广阔的方向发展,将会涵盖定时任务、数据调度、服务调度,以及待考虑的容器调度、大数据调度等等。
部署和架构模型也将多样化,lite 版本专注于进程内调度,cloud 版本将考虑调度器和执行器分开的部署方式(目前可以对接 mesos,未来可以对接 k8s 以及去除第三方的调度中心)。
功能方面,则在现有的任务分片的能力上,增加 API 调度以及任务 DAG(有向无环图)依赖等能力。
欢迎感兴趣的同学一起参与社区。愿意一起做 ElasticJob 的同学欢迎多多关注 GitHub 发布的任务。
GitHub 地址:
https://github.com/apache/sha…
https://github.com/apache/sha…
附录 一个月以来完成的主要工作列表
项目基础设施
- 将项目迁移至 Apache 的 GitHub repo (#732)
- 添加 Apache 协议版权信息 (#733)
- 将 Javadoc 翻译为英文 (#734)
- 将 ElasticJob 的最低 Java 支持版本升级为 JDK 8 (#736)
- 修改项目包和 Maven 坐标名称 (#737)
- 修改 Spring 命名空间路径 (#738)
- 更新社区 Issue 模板 (#739)
- 梳理 Apache Release 相关事宜 (#808,进行中)
- 将官方网站迁移至 Apache 域名 (#815)
API 变更
- 全新的作业 API,ElasticJob 不再通过作业类名称反射实例化作业 (#792)
- 通过 SPI + Type 的方式配置作业分片策略、作业执行器以及作业异常处理器 (#792)
作业执行轨迹追踪
- 将作业执行轨迹追踪模块与内核模块分离 (#825)
- SPI + Type 的方式配置作业执行轨迹追踪 (#831)
- 将查询和统计功能移至控制台模块 (#835)
- 支持多种数据库类型存储作业执行轨迹 (#839)
作业内核
- 增加单次任务调用接口 (#816,进行中)
附录 志愿者任务列表
志愿者任务列表
- 将控制台后端技术栈从 Jetty 换为 Spring Boot (#836)
- 使用 Spring Boot + JPA 处理查询 DAO 模块 (#837)
- 使用 Spring Boot + JPA 处理统计 DAO 模块 (#838)
- 为作业执行轨迹存储增加其他数据库的支持 (#840)