乐趣区

ElasticJob-社区重启月余发展迅猛

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 远景目标

  1. 为 Apache ShardingSphere 的数据调度模块赋能,数据调度主要包括数据的弹性迁移和容量调整等功能。
  2. 独立成为 Apache 顶级项目。当 ElasticJob 社区和 Apache ShardingSphere 社区同样活跃且多元化,并且具备足够的的贡献者和提交者时,我们愿意讨论将其升级为 Apache 顶级项目。

ElasitcJob 开发目标

  1. 内核类。目前 ElasticJob 参照 Apache ShardingSphere 的 SPI 方式在拓展,在微内核 + 可插拔的架构设计方向前进中。内核提升还包括调度器和执行器分离,任务 DAG(有向无环图)依赖等;
  2. 生态类。包括作业执行轨迹统计,作业控制台后端,作业类型的增加,注册中心多类型适配等工作,目前已将生态类模块与内核分离;
  3. 前端类。ElasticJob 的控制台页面目前使用 jQuery 进行开发,希望换成现在流行的 vue 框架使前后端分离,并提升操作界面以及监控可视化的能力。

ElasitcJob 社区目标

  1. 希望对 ElasticJob 感兴趣的同学,能够在各自的渠道都宣传。让更多的人知道 ElasticJob 社区重启的资讯,以吸引更多的贡献者加入社区;
  2. 整理并回答社区遗留 Issue,将这两年来累积的技术债务逐渐偿还;
  3. 整理文档,包括现有文档的完善和英文文档翻译。

ElasticJob 未来规划

未来的 ElasitcJob 会朝着更广阔的方向发展,将会涵盖定时任务、数据调度、服务调度,以及待考虑的容器调度、大数据调度等等。

部署和架构模型也将多样化,lite 版本专注于进程内调度,cloud 版本将考虑调度器和执行器分开的部署方式(目前可以对接 mesos,未来可以对接 k8s 以及去除第三方的调度中心)。

功能方面,则在现有的任务分片的能力上,增加 API 调度以及任务 DAG(有向无环图)依赖等能力。

欢迎感兴趣的同学一起参与社区。愿意一起做 ElasticJob 的同学欢迎多多关注 GitHub 发布的任务。

GitHub 地址:

https://github.com/apache/sha…

https://github.com/apache/sha…

附录 一个月以来完成的主要工作列表

项目基础设施

  1. 将项目迁移至 Apache 的 GitHub repo (#732)
  2. 添加 Apache 协议版权信息 (#733)
  3. 将 Javadoc 翻译为英文 (#734)
  4. 将 ElasticJob 的最低 Java 支持版本升级为 JDK 8 (#736)
  5. 修改项目包和 Maven 坐标名称 (#737)
  6. 修改 Spring 命名空间路径 (#738)
  7. 更新社区 Issue 模板 (#739)
  8. 梳理 Apache Release 相关事宜 (#808,进行中)
  9. 将官方网站迁移至 Apache 域名 (#815)

API 变更

  1. 全新的作业 API,ElasticJob 不再通过作业类名称反射实例化作业 (#792)
  2. 通过 SPI + Type 的方式配置作业分片策略、作业执行器以及作业异常处理器 (#792)

作业执行轨迹追踪

  1. 将作业执行轨迹追踪模块与内核模块分离 (#825)
  2. SPI + Type 的方式配置作业执行轨迹追踪 (#831)
  3. 将查询和统计功能移至控制台模块 (#835)
  4. 支持多种数据库类型存储作业执行轨迹 (#839)

作业内核

  1. 增加单次任务调用接口 (#816,进行中)

附录 志愿者任务列表

志愿者任务列表

  1. 将控制台后端技术栈从 Jetty 换为 Spring Boot (#836)
  2. 使用 Spring Boot + JPA 处理查询 DAO 模块 (#837)
  3. 使用 Spring Boot + JPA 处理统计 DAO 模块 (#838)
  4. 为作业执行轨迹存储增加其他数据库的支持 (#840)
退出移动版