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

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

ElasticJob 目前已经成为 Apache ShardingSphere 的唯一一个子项目,也是 Apache 软件基金会的非*正式项目。由于 Apache ShardingSphere 是 Apache 的*项目,因此旗下的 ElasticJob 是无需经过 Apache 孵化器的。

❖ 

CHAPTER 1

社区数据

ElasticJob 社区重启已经超过了一个月的时间,在此期间,ElasticJob 社区已大变模样。

5月27至6月27这一个月的数据如下:

 

  - 合并 86 个 Pull Requests;

  - 开启 12 个 Issue;

  - 关闭 47 个 Issue;

  - 增加 52,677 行代码;

  - 删除 114,417 行代码;

  - 共计 24 名贡献者;

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

❖ ❖

CHAPTER 2

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. 整理文档,包括现有文档的完善和英文文档翻译。

❖ ❖

CHAPTER 3

ElasticJob 未来规划

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

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

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

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

GitHub 地址:

https://github.com/apache/shardingsphere-elasticjob-lite

https://github.com/apache/shardingsphere-elasticjob-cloud

❖ ❖

CHAPTER 4

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

项目基础设施

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,进行中)

❖ ❖

CHAPTER 5

 附录 志愿者任务列表

志愿者任务列表

1. 将控制台后端技术栈从 Jetty 换为 Spring Boot (#836)

2. 使用 Spring Boot + JPA 处理查询 DAO 模块 (#837)

3. 使用 Spring Boot + JPA 处理统计 DAO 模块 (#838)

4. 为作业执行轨迹存储增加其他数据库的支持 (#840)