停滞数年后,ElasticJob 携首个 Apache 版本 3.0.0-alpha 回归( 二 )


考虑到 Mesos 系统部署相对复杂,因此 ElasticJob 将这部分拆分至 ElasticJob cloud 部分,供高级用户使用 。随着 Kubernetes 的强劲发展,ElasticJob 未来也会完成 Cloud 部分与它的对接 。

  • 作业治理
作业在分布式场景下的高可用、失效转移、错过作业重新执行等行为的治理和协调 。
  • 可视化管控端
主要包括作业声明周期管控、执行历史记录查询、配置中心管理等 。
 
3.0.0-alpha 功能先睹为快构建 & 依赖1. 升级至 Java 8
2. 升级最低支持的 ZooKeeper 版本 至 3.6.x
API 变更1. 将 Maven 坐标的 groupId 变更为org.apache.shardingsphere.elasticjob
2. 将包名称变更为org.apache.shardingsphere.elasticjob
3. 将 Spring 命名空间名称变更为 http://shardingsphere.apache.org/schema/elasticjob
4. 全新的作业 API,可使用 SPI 自定制作业类型
5. 使用 SPI 引用配置策略,如任务分片、线程池使用和错误处理等策略
6. 将控制台代码从作业核心模块中分离
新功能1. 调度器多元化,增加一次性任务调度器
2. 提供ElasticJob-Lite 项目的 官方 Spring Boot Starter
3. 支持使用多种数据库类型存储作业历史轨迹数据
4. 允许用户通过环境变量指定适合的 IP 地址
5. 全新的控制台界面
 
3.x版本设计解读通过Release Notes能够看出,ElasticJob 3.x 并非 2.x 的修补版本,而是通过革新的设计理念践行的一套新产品 。
ElasticJob 3.x 最直观的变化是将原有的个位数的模块数量拆分为数十个职责清理的微模块 。
新版本的关键词是微内核、可扩展和生态对接 。
  • 微内核
ElasticJob 3.x 抽象了 API 和基础设施模块,并且将注册中心、历史执行轨迹、控制台、作业执行器、Lite和Cloud等模块全数分离 。
内核模块高度可扩展,但不依赖于可扩展模块本身的实现 。它继承了 ElasticJob 之前的能力,在继续为开发者提供分布式服务的工具包的同时,向开发者开放可自由定制化扩展的脚手架 。
  • 可扩展
ElasticJob 3.x在微内核的基础上定义了丰富的可扩展接口,包括作业类型、配置策略、历史执行轨迹存储端以及将要做的注册中心存储端等可扩展接口 。
开发者可以在不修改 ElasticJob 源码的情况下织入定制化功能,真正做到对修改关闭,对扩展开放 。
  • 生态对接
ElasticJob 3.x 提供了官方的Spring Boot Starter,并已经着手开发基于 Apache SkyWalking 的自动探针,使其能更加便捷的融入现有的技术体系 。
另外,从Release Notes中可以解读到的是,ElasticJob 3.x 并未对 Cloud进行大幅更新,其主要改动均集中在内核以及Lite模块 。
对于部署复杂且逐渐不再流行的 Mesos,ElasticJob 的 3.x 将渐渐弱化对它的依赖,并计划在未来提供更加泛化资源隔离 API,使 Cloud 产品线可对接Mesos,Kubernetes 甚至无依赖的独立部署使用 。
 
3.0.0-beta 功能预告在调整完项目和包结构之后,ElasticJob 3.0.0-beta版本将工作重点放在新功能开发和操作 API 标准化这两个方面 。
新功能预告
  • 作业依赖
支持基于有向无环图(DAG)的作业依赖 。依赖包含基于作业整体维度的依赖,以及基于作业分片项的依赖,打造更加灵活的作业治理解决方案 。
  • HTTP 作业类型
支持HTTP作业类型,在Script 之外提供另外的跨语言作业类型 。
操作 API 标准化
  • 统一提供基于 RESTful 操作API接口
  • 简化基于 SDK 操作API接口
 
未来规划未来,ElasticJob 将大刀阔斧的向前迈进,主要的规划如下:
  • 调度执行分离
将调度器和执行器完全分离 。调度器可以与执行器一起部署,即为 ElasticJob lite 的无中心化轻量级版本;调度器可以与执行器分离部署,即为 ElasticJob cloud 的资源管控的一站式分布式调度系统 。
  • 更加易用的云管产品
将目前仅支持 Mesos 的 ElasticJob cloud 打造为支持 Mesos 和 Kubernetes 的作业云管平台,并提供无 Mesos 和 Kubernetes 也能够独立使用的不包含资源管控的纯作业管控平台 。
  • 可插拔生态
与 Apache ShardingSphere 一脉相承,ElasticJob 也将提供更加可插拔和模块化架构,为开发者提供基础设施 。方便开发者基于 ElasticJob 二次开发,添加各种定制化功能,包括但不限于作业类型(如:大数据作业、HTTP作业等)、注册中心类型(如:Eureka等)、执行轨迹存储介质(如其他数据库类型)等 。
ElasticJob 最终会将 Lite 和 Cloud 以更贴近的方式供开发工程师和运维工程师使用,共享其调度、执行和作业库 。整体规划如下:


推荐阅读