
文章插图
作者 | 张亮,Apache ShardingSphere PMC Chair
责编 | 夕颜
头图 | CSDN
出品 | CSDN(ID:CSDNnews)
在成为 Apache ShardingSphere 的子项目的几个月时间里,ElasticJob 社区在修复与合并了535个 issue 和 pull request 之后,发布了加入 Apache 软件基金会后的第一个正式版本:3.0.0-alpha 。
背景ElasticJob(https://github.com/apache/shardingsphere-elasticjob)是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成 。它诞生于 2015年,当时业界虽然有 QuartZ 等出类拔萃的定时任务框架,但缺乏分布式方面的探索 。分布式调度云平台产品的缺失,使得 ElasticJob 从出现伊始便备受关注 。它有效地弥补了作业在分布式领域的短板,并且提供了一站式的自动化运维管控端,各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署 。
ElasticJob 在技术选型时,选择站在了巨人的肩膀上而不是重复制造轮子的理念,将定时任务事实标准的 QuartZ 与 分布式协调的利器 ZooKeeper 完美结合,快速而稳定的搭建了全新概念的分布式调度框架 。
ElasticJob调度模型ElasticJob 的调度模型划分为支持线程级别调度的进程内调度 ElasticJob-Lite,和进程级别调度的ElasticJob-Cloud 。
进程内调度ElasticJob-Lite 是面向进程内的线程级调度框架 。它能够与 Spring 、Dubbo等 JAVA 框架配合使用,在作业中可自由使用 Spring 注入的 Bean,如数据源连接池、Dubbo 远程服务等,更加方便地贴合业务开发 。
ElasticJob-Lite与业务应用部署在一起,其生命周期与业务应用保持一致,是典型的嵌入式轻量级架构 。ElasticJob-Lite 非常适合于资源使用稳定、部署架构简单的普通 Java 应用,可以理解为 Java 开发框架 。
ElasticJob-Lite 本身是无中心化架构,无需独立的中心化调度节点,分布式下的每个任务节点均是以自调度的方式适时的调度作业 。任务之间只需要一个注册中心来对分布式场景下的任务状态进行协调即可,目前支持 ZooKeeper 作为注册中心 。
架构图如下:

文章插图
通过图中可看出,ElasticJob-Lite 的分布式作业节点通过选举获取主节点,并通过主节点进行分片 。分片完毕后,主节点与从节点并无二致,均以自我调度的方式执行任务 。
进程级调度
ElasticJob-Cloud 拥有进程内调度和进程级别调度两种方式 。由于 ElasticJob-Cloud 能够对作业服务器的资源进行控制,因此其作业类型可划分为常驻任务和瞬时任务 。常驻任务类似于ElasticJob-Lite,是进程内调度;瞬时任务则完全不同,它充分的利用了资源分配的削峰填谷能力,是进程级的调度,每次任务的会启动全新的进程处理 。
ElasticJob-Cloud 需要通过 Mesos 对资源进行控制,并且通过部署在 Mesos Master的调度器进行任务和资源的分配 。Cloud采用中心化架构,将调度中心的高可用交由 Mesos管理 。
它的架构图如下:

文章插图
通过图中可看出,ElasticJob-Cloud 除了拥有 Lite 的全部能力之外,还拥有资源分配和任务分发的能力 。它将作业的开发、打包、分发、调度、治理、分片等一些列的生命周期完全托管,是真正的作业云调度系统 。
相比于 ElasticJob-Lite 的简单易用,ElasticJob-Cloud 对 Mesos 的强依赖增加了系统部署的复杂度,因此更加适合大规模的作业系统 。
功能列表ElasticJob 功能主要有弹性调度、资源分配、作业治理和可视化管控 。
- 弹性调度
ElasticJob 中任务分片项的概念,使得任务可以在分布式的环境下运行,每台任务服务器只运行分配给该服务器的分片 。随着服务器的增加或宕机,ElasticJob 会近乎实时的感知服务器数量的变更,从而重新为分布式的任务服务器分配更加合理的任务分片项,使得任务可以随着资源的增加而提升效率 。
- 资源分配
推荐阅读
- 买电脑CPU时必看三点参数
- C语言中的动态内存分配与变长数组
- C语言标准库的7类函数
- 66个Excel函数
- 914航班穿越之谜是真的吗 914航班穿越时空事件35年后真相
- 困鹿山属于西双版纳吗,宁洱困鹿山的生态人文指数
- Columns函数为VLOOKUP注入了灵魂
- excel数据核对一下就搞定,这几种办法你用过吗?
- Vue 中如何从插槽中发出数据
- Excel高手常用的35个函数解析
