写点什么

分布式调度中间件 Elastic-Job 2.1.0 发布:Cloud Native 里程碑版本

  • 2017-04-09
  • 本文字数:2191 字

    阅读完需:约 7 分钟

Elastic-Job 是什么?

Elastic-Job 是一个开源的分布式调度中间件,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。

Elastic-Job-Lite 为轻量级无中心化解决方案,使用 jar 包提供分布式任务的调度和治理。 Elastic-Job-Cloud 是一个 Mesos Framework,依托于 Mesos 额外提供资源治理、应用分发以及进程隔离等服务。

项目已开源接近 2 年,目前为止已更新发布 16 次。Elastic-Job 已在分布式作业领域占有一席之地,明确采纳的公司已超过 50 家,未收录的采纳公司不计其数,更有多个开源产品衍生自 Elastic-Job。

项目的开源地址:

https://github.com/dangdangdotcom/elastic-job

Elastic-Job-Lite 和 Elastic-Job-Cloud 的定位是什么?

Elastic-Job-Lite 定位为纯粹的作业中间件,仅关注分布式调度、协调以及分片等核心功能,将作业部署、资源分配等功能交于 Mesos 或 Kubernetes 处理;而 Elastic-Job-Cloud 提供一体化私有云服务,将分布式调度、作业部署、资源分配、监控、日志处理等提供完善的解决方案。

从功能上看 Elastic-Job-Cloud 更加完善,但依托于 Mesos,使用复杂度较高,不易整合进公司现有系统,因而更加轻量级的 Elastic-Job-Lite 在实际使用中更受青睐。

之前版本的 Elastic-Job-Lite 有什么缺失?

主要缺失就是对 Cloud Native 的支持。原来的 Elastic-Job-Lite 是面向静态场景的,简单说就是每台作业服务器只能部署一个作业名称相同的作业实例,而当这个作业实例下线时,该作业服务器则显示为下线状态。这对于使用物理服务器的场景来说比较适合,而对于使用 Docker 的场景,则不太友好,原因是:

  1. 每次作业上线服务器 IP 可能产生变化,旧的服务器 IP 不会再使用,从而产生垃圾数据。
  2. Docker 的治理系统可以在一台物理服务器上启动多实例,而仅支持单服务器单实例的 Elastic-Job 使用起来诸多不便,需要 Docker 的治理系统额外配置。

Elastic-Job 2.1.0 版本是如何做到 Cloud Native 的?

新版本支持单服务器跑任意多的相同作业实例,原作业实例标识由 IP 地址替换为作业启动瞬时产生的 UUID。在新的 Cloud Native 架构下,作业物理服务器概念大幅弱化。为了向前兼容,作业物理服务器仅包含控制服务器是否可以禁用这一功能。为了更加纯粹的实现作业核心,作业物理服务器统计和操作功能未来可能删除,可下放至容器治理部署系统。

使用新增加的运行实例概念全面替换原服务器概念,Elastic-Job-Lite 与容器治理系统的对接由原来的服务器维度转变为运行实例维度,每个运行实例都是动态的,会随着作业下线而消失。

习惯根据服务器静态分配作业的使用者也不用太过担心新版本带来的变化,服务器信息以另外一个维度可选的存在于作业管理信息中,使用者仍然可以继续使用服务器静态部署的方式。

通过这次修改,Elastic-Job-Lite 已经可以非常容易的对接 Mesos + Marathon 以及 Kubernetes,相信使用者可以非常轻松的搭建一个深度定制版的作业私有云。

Elastic-Job 2.1.0 版本还有哪些关键更新?

Elastic-Job 2.1.0 版本是仅针对 Elastic-Job-Lite 进行全面提升。它主要包含以下 4 方面的提升:

  1. 单服务器可运行任意多的相同作业实例。Cloud Native,这里不再细说。
  2. 自修复能力使稳定性进一步提升。之前的 Elastic-Job 经过一年多的洗礼,稳定性已然不错,但是分布式场景由于环境复杂,很难完全通过正向的方式保证每个节点间的状态完全同步。而 Elastic-Job 原来的版本在网络不稳定的情况下,可能发生主节点选举卡死,或某个分片不运行的情况,可以通过重启应用修复。新版本的 Elastic-Job-Lite 使用异步线程,定期(可配置时间间隔)检测集群中不正确的状态,以反向检查的方式查找并自动修复分布式的不一致,为分布式稳定性的完善增加了最后一块拼图。
  3. 作业操作梳理。新版本将操作分为作业、实例、分片以及服务器 4 个维度,去除了容易混淆的暂停操作,对禁用功能进一步的增强,可以从各个维度控制整体作业或独立分片。
  4. 控制台界面提升。完全重写了控制台界面并且增加了事件追踪界面展示。新界面提供更加清新的用户体验,甚至包括主题皮肤切换,欢迎大家亲自体会。

Elastic-Job 2.1.0 版本与旧版本兼容么?

新里程碑版本做了如此大的修改和提升,那么从旧版本升级至新版本有哪些地方需要修改?相信很多老用户有这样的疑问。答案是:不需要做任何改动。

Elastic-Job 2.1.0 虽然对数据的存储结构进行了调整,但完全兼容原有数据结构,并且 API 和配置并未改变,使用者可以平滑升级。

Elastic-Job 下一步要做什么?

当前的 Elastic-Job 已支持事件驱动,但并不完善。因此 Elastic-Job 下个功能将针对事件驱动进行提升,将其分布式“定时任务”中间件的定位彻底改变为分布式“任务”中间件。

另外还有很多功能需要继续完善,如作业依赖的支持等。

对于新手来说使用 Elastic-Job 很难么?

Elastic-Job-Cloud 对于新手来说使用起来并不太容易,需要对 Mesos 技术栈有一定了解。

Elastic-Job-Lite 则非常简单,只需在 pom.xml 中引入 Elastic-Job 的 maven 坐标,并且参照在 github 上的 example 编写几行代码即可,唯一的外部依赖是 Zookeeper。

最后,请允许我再重复一次,项目的开源地址: https://github.com/dangdangdotcom/elastic-job

欢迎使用、吐槽和提出建议。

其他相关资料

当当开源 elastic-job,分布式作业调度框架

【CNUTCon2016】基于 Mesos 的当当作业云 Elastic-Job-Cloud

【QCon 北京 2016】当当架构平台化之道

2017-04-09 18:076708
用户头像

发布了 25 篇内容, 共 26.8 次阅读, 收获喜欢 119 次。

关注

评论

发布
暂无评论
发现更多内容

【牛客刷题-算法】1-算法入门-数据结构-栈

清风莫追

算法与数据结构 10月月更

Java中的自旋锁和适应性自旋锁是什么意思?其分类依据是啥?

wljslmz

Java 自旋锁 10月月更 适应性自旋锁

操作系统导论:分页

小白钊钊

操作系统 java; 10月月更

大数据ELK(九):使用VSCode测试分词器

Lansonli

ELK 10月月更

多线程——死锁的原因和解决方案

StackOverflow

编程 多线程 10月月更

多线程(进阶)

StackOverflow

编程 多线程安全 10月月更

React面试:谈谈虚拟DOM,Diff算法与Key机制

beifeng1996

React

【CSS】:什么是z-index属性?该属性有哪些取值类型?

翼同学

CSS 前端 样式设置 10月月更

spring-cloud-kubernetes与SpringCloud Gateway

程序员欣宸

Kubernetes spring-cloud 10月月更 spring-cloud-kubernetes

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

大画 Spark :: 网络 (8)-Spark 网络中的“四次握手”Driver 如何获取 Executor 的 EndpointRef 烧脑

dclar

大数据 hadoop spark 源代码 spark源码

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

计算机网络——MAC地址、IP地址

StackOverflow

编程 计算机网络 10月月更

【牛客刷题-算法】 NC19 连续子数组的最大和

清风莫追

数据结构与算法 10月月更

问:React的setState为什么是异步的?

beifeng1996

React

【愚公系列】2022年10月 Go教学课程 015-运算符之赋值运算符和关系运算符

愚公搬代码

10月月更

从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题

felix

落地 机器人 AI人工智能

测试

乌龟哥哥

9月月更

腾讯云搭建wordpress网站超详细介绍

乌龟哥哥

9月月更

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

【牛客刷题-算法】 NC13 二叉树的最大深度

清风莫追

二叉树 数据结构与算法 10月月更

能不能手写Vue响应式?前端面试进阶

bb_xiaxia1998

Vue

When allowCredentials is true, allowedOrigins cannot contain the special value ___ since that cannot be set on the _Access-Contr

共饮一杯无

Java springboot 10月月更

【结构体内功修炼】结构体内存对齐(一)

Albert Edison

C语言 结构体 10月月更 内存对齐

《MySQL入门很轻松》第5章:数据完整性及其分类

乌龟哥哥

9月月更

GaussDB(DWS)如何实现实时,批量和交付式查询一站式开发

乌龟哥哥

9月月更

浅谈云原生安全

HummerCloud

云原生 云安全 云原生安全

阿里云搭建halo博客

乌龟哥哥

9月月更

linxu入门指令

乌龟哥哥

9月月更

启动 Hello Spring Security Boot 应用

HoneyMoose

从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析

乌龟哥哥

9月月更

分布式调度中间件Elastic-Job 2.1.0发布:Cloud Native里程碑版本_DevOps & 平台工程_张亮_InfoQ精选文章