广告
返回顶部
首页 > 资讯 > 前端开发 > html >什么是elastic-job
  • 955
分享到

什么是elastic-job

2024-04-02 19:04:59 955人浏览 八月长安
摘要

这篇文章主要讲解了“什么是elastic-job”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是elastic-job”吧!ElasticJob 诞生于

这篇文章主要讲解了“什么是elastic-job”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是elastic-job”吧!

ElasticJob 诞生于 2015 年,当时业界虽然有 QuartZ 等出类拔萃的定时任务框架,但缺乏分布式方面的探索。

分布式调度云平台产品的缺失,使得 ElasticJob  从出现伊始便备受关注。它有效的弥补了作业在分布式领域的短板,并且提供了一站式的自动化运维管控端。

ElasticJob 在技术选型时,选择站在了巨人的肩膀上而不是重复制造轮子的理念,将定时任务事实标准的 QuartZ 与分布式协调的利器  ZooKeeper 完美结合,快速而稳定的搭建了全新概念的分布式调度框架。

ElasticJob 是什么?

ElasticJob 是一个分布式调度解决方案,由两个相互独立的子项目 ElasticJob Lite 和 ElasticJob Cloud  组成。

ElasticJob Lite 定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务。

ElasticJob Cloud 采用自研 Mesos Framework 的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。

它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。

使用 ElasticJob 能够让开发工程师不再担心任务的线性吞吐量提升等非功能需求,使开发工程师能够更加专注于面向业务编码设计。

同时,它能够解放运维工程师,使他们不必再担心任务的可用性和相关管理需求,只通过轻松的增加服务节点即可达到自动化运维的目的。

ElasticJob 调度模型

与大部分的作业平台不同,ElasticJob 的调度模型划分为支持线程级别调度的进程内调度 ElasticJob Lite,和进程级别调度的  ElasticJob Cloud。

进程内调度

ElasticJob Lite 是面向进程内的线程级调度框架。通过 ElasticJob ,作业能够透明化的与业务应用系统相结合。

它能够方便的与 springdubbo 等 Java 框架配合使用,在作业中可自由使用 Spring 注入的 Bean,如数据源连接池、Dubbo  远程服务等,更加方便的贴合业务开发。

ElasticJob Lite 与业务应用部署在一起,其生命周期与业务应用保持一致,是典型的嵌入式轻量级架构

ElasticJob Lite 非常适合于资源使用稳定、部署架构简单的普通 Java 应用,可以理解为 Java 开发框架。

ElasticJob Lite 本身是无中心化架构,无需独立的中心化调度节点,分布式下的每个任务节点均是以自调度的方式适时的调度作业。

任务之间只需要一个注册中心来对分布式场景下的任务状态进行协调即可,目前支持 ZooKeeper 和 ETCD 作为注册中心。

架构图如下:

什么是elastic-job

ElasticJob 的产品定位与新版本设计理念

通过图中可看出,ElasticJob Lite 的分布式作业节点通过选举获取主节点,并通过主节点进行分片。

分片完毕后,主节点与从节点并无二致,均以自我调度的方式执行任务。

进程级调度

ElasticJob Cloud 拥有进程内调度和进程级别调度两种方式。由于 ElasticJob Cloud  能够对作业服务器的资源进行控制,因此其作业类型可划分为常驻任务和瞬时任务。

常驻任务类似于 ElasticJob  Lite,是进程内调度;瞬时任务则完全不同,它充分的利用了资源分配的削峰填谷能力,是进程级的调度,每次任务的会启动全新的进程处理。

ElasticJob Cloud 需要通过 Mesos 对资源进行控制,并且通过部署在 Mesos Master 的调度器进行任务和资源的分配。Cloud  采用中心化架构,将调度中心的高可用交由 Mesos 管理。

它的架构图如下:

什么是elastic-job

ElasticJob 的产品定位与新版本设计理念

通过图中可看出,ElasticJob Cloud 除了拥有 Lite 的全部能力之外,还拥有资源分配和任务分发的能力。

它将作业的开发、打包、分发、调度、治理、分片等一些列的生命周期完全托管,是真正的作业云调度系统。

相比于 ElasticJob Lite 的简单易用,ElasticJob Cloud 对 Mesos  的强依赖增加了系统部署的复杂度,因此更加适合大规模的作业系统。

ElasticJob 功能列表

ElasticJob 功能主要有弹性调度、资源分配、作业治理和可视化管控。

弹性调度

弹性调度是 ElasticJob 最重要的功能,也是这款产品名称的由来。它是一款能够让任务通过分片进行水平扩展的任务处理系统。

ElasticJob 中任务分片项的概念,使得任务可以在分布式的环境下运行,每台任务服务器只运行分配给该服务器的分片。

随着服务器的增加或宕机,ElasticJob  会近乎实时的感知服务器数量的变更,从而重新为分布式的任务服务器分配更加合理的任务分片项,使得任务可以随着资源的增加而提升效率。

举例说明,如果作业分为 4 片,用两台服务器执行,则每个服务器分到 2 片,如下图所示:

什么是elastic-job

ElasticJob 的产品定位与新版本设计理念

当新增加作业服务器时,ElasticJob  会通过注册中心的临时节点的变化感知到新服务器的存在,并在下次任务调度的时候重新分片,新的服务器会承载一部分作业分片。

分片如下图所示:

什么是elastic-job

ElasticJob 的产品定位与新版本设计理念

当作业服务器在运行中宕机时,注册中心同样会通过临时节点感知,并将在下次运行时将分片转移至仍存活的服务器,以达到作业高可用的效果。

本次由于服务器宕机而未执行完的作业,则可以通过失效转移的方式继续执行。

作业高可用如下图所示:

什么是elastic-job

ElasticJob 的产品定位与新版本设计理念

资源分配

在导读中提到过,调度是指在适合的时间将适合的资源分配给任务,并使其生效。

ElasticJob 具备资源分配的能力,它能够像分布式的操作系统一样调度任务。

资源分配是借由 Mesos 实现的,由 Mesos 负责分配任务声明的所需资源(CPU 和内存),并将分配出去的资源进行隔离。ElasticJob  在获取到资源之后才会执行任务。

考虑到 Mesos 系统部署相对复杂,因此 ElasticJob 将这部分拆分至 ElasticJob Cloud 部分,供高级用户使用。

随着 kubernetes 的强劲发展,ElasticJob 未来也会完成 Cloud 部分与它的对接。

作业治理

作业在分布式场景下的高可用、失效转移、错过作业重新执行等行为的治理和协调。

可视化管控端

主要包括作业的增删改查管控端、执行历史记录查询、配置中心的管理等。

ElasticJob 典型应用场景

ElasticJob 着重解决与复杂任务、资源导向任务和业务应用任务这几个方面的问题。

复杂任务

数据迁移:如果将百亿的数据从一组数据库集群迁移至另一组数据库集群,单线程的作业可能需要几天到几周不等。

通过 ElasticJob 的弹性分片能力,可以大幅减少海量数据迁移所需要的时间。

资源导向任务

占用大量计算资源的报表作业。如果每天凌晨需要花费数小时计算 T+1 的业务报表,没有资源的管控,则无论报表作业是否启动,都要为其分配足够的资源。

ElasticJob 将作业分为常驻作业和瞬时作业,对于报表类作业,瞬时作业是非常适合的。

它能否在作业启动时获取资源,在作业结束后归还资源,做到真正的削峰填谷,更加合理的利用资源。

业务应用

订单拉取作业:订单系统大多采用消息中间件或作业的方式实现订单拉取,用于将订单生成系统和后端履约系统解耦,以便于前后端流量分离。

采用作业实现的订单系统,可以通过 ElasticJob 实现订单相关业务逻辑,可以方便的利用外围系统所提供的依赖注入服务,无缝的融入业务端研发。

ElasticJob 新版本设计理念

经过了一个多月的开发,ElasticJob 社区近期计划发布 3.0.0-alpha,以作为它进入 Apache 软件基金会的第一个发布版本。

它的主要功能包括:

作业生态圈

灵活定制化作业是 3.x 版本的最重要设计变革。新版本基于 Apache ShardingSphere 可插拔架构的设计理念,打造了全新作业  api

意在使开发者能够更加便捷且相互隔离的方式拓展作业类型,打造 ElasticJob 作业的生态圈。

ElasticJob 提供灵活的作业 API,它将作业解耦为作业接口和执行器接口。用户可以定制化全新的作业类型,诸如脚本执行、Http  服务执行、大数据类作业、文件类作业等。

目前 ElasticJob 内置了脚本执行作业,并且完全开放了扩展接口,开发者可以通过 SPI 的方式引入新的作业类型,并且可以便捷的回馈至社区。

多元化调度器

在保留原有的基于 Cron 的时间触发调度器的基础上,增加了一次性的调度 API,为 ElasticJob 增加了时间维度之外的全新调度维度。

微内核&生态分离

抽象作业内核模块,将作业执行轨迹追踪等辅助功能以及作业生态等可扩展模块从内核模块完全抽离。

作业执行轨迹追踪模块作为二级生态,修改了之前只支持 Mysql 作为存储介质的限制,完全开放持久化的适配。

未来规划

3.0.0 的版本作为一个快速给社区回馈的版本,并未进行颠覆性的革新,而是尝试将项目内核一点一滴的解耦。

在未来的规划中,ElasticJob 将大刀阔斧的向前迈进,主要的规划如下:

作业依赖

支持基于有向无环图(DAG)的作业依赖。依赖包含基于作业整体维度的依赖,以及基于作业分片项的依赖,打造更加灵活的作业治理解决方案。

调度执行分离

将调度器和执行器完全分离。调度器可以与执行器一起部署,即为 ElasticJob Lite 的无中心化轻量级版本;调度器可以与执行器分离部署,即为  ElasticJob Cloud 的资源管控的一站式分布式调度系统。

更加易用的云管产品

将目前仅支持 Mesos 的 ElasticJob cloud 打造为支持 Mesos 和 Kubernetes 的作业云管平台,并提供无 Mesos 和  Kubernetes 也能够独立使用的不包含资源管控的纯作业管控平台。

可插拔生态

与 Apache ShardingSphere 一脉相承,ElasticJob 也将提供更加可插拔和模块化架构,为开发者提供基础设施。

开发者可以方便的基于 ElasticJob 二次开发,添加各种定制化功能,包括但不限于作业类型(如:大数据作业、HTTP  作业等)、注册中心类型(如:Eureka 等)、执行轨迹存储介质(如其他数据库类型)等。

ElasticJob 的定位如下图所示:

什么是elastic-job

ElasticJob 的产品定位与新版本设计理念

关于 ElasticJob 社区

ElasticJob 社区的目标是成为和 Apache ShardingSphere 一样的 Apache  软件基金会的顶级项目,达成更广泛的应用。

项目重启的这段时间,ElasticJob 持续在 GitHub 的周和月度排行榜上有名:

什么是elastic-job

最近一个月,ElasticJob 社区合并了 152 个 Pull Requests,关闭了 105 个 Issues;25个提交者总共 158  次提交,完成了4w+ 行代码的改动。

什么是elastic-job

感谢各位的阅读,以上就是“什么是elastic-job”的内容了,经过本文的学习后,相信大家对什么是elastic-job这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 什么是elastic-job

本文链接: https://www.lsjlt.com/news/84822.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么是elastic-job
    这篇文章主要讲解了“什么是elastic-job”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是elastic-job”吧!ElasticJob 诞生于...
    99+
    2022-10-19
  • Elastic Stack(ELK)是什么
    这篇“Elastic Stack(ELK)是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Elastic&nb...
    99+
    2023-07-06
  • job php是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑job php是什么意思?job.php是一种脚本文件,因为后缀名为“PHP”的文件就是一种程序语言的命名格式结尾。PHP(外文名:PHP: Hypertext Prep...
    99+
    2021-05-21
    php
  • job php指的是什么意思
    这篇文章主要介绍了job php指的是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。job php是一种脚本文件,因为后缀名为“PHP”的文件就是一种程序语言的命名格...
    99+
    2023-06-25
  • Oracle中JOB异常中断的原因是什么
    今天就跟大家聊聊有关Oracle中JOB异常中断的原因是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JOB 信息:参数:BROKEN &nbs...
    99+
    2022-10-18
  • xxl-job带参数执行和高可用部署的方法是什么
    这篇“xxl-job带参数执行和高可用部署的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“xxl-job带参数执行...
    99+
    2023-07-05
  • k8s Job执行一次性及批处理任务使用的场景是什么
    这篇文章主要介绍“k8s Job执行一次性及批处理任务使用的场景是什么”,在日常操作中,相信很多人在k8s Job执行一次性及批处理任务使用的场景是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-07-05
  • 时区调整对job的运行时间有什么影响
    这篇文章将为大家详细讲解有关时区调整对job的运行时间有什么影响,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。调整时区既可以在操作系统调整,也可以在sess...
    99+
    2022-10-19
  • Spring之什么是ObjectFactory?什么是ObjectProvider?
    目录ObjectFactory接口定义跟FactoryBean的区别及联系ObjectProvider接口定义接口分析ObjectProvider解决的问题总结在Spring的学习过...
    99+
    2023-01-01
    Spring ObjectFactory Spring ObjectProvider ObjectFactory ObjectProvider
  • Windows Vista是什么?什么是Windows Vista
      我身边很多朋友对Windows Vista是什么一点都不知道,经常来问我,所以今天我就像大家详细介绍Windows Vista这个操作系统,如有不足,还请大家见谅,好了,进入正题:   Windows Vista是微...
    99+
    2023-06-05
    Windows Vista
  • window.setinterval是什么 其作用是什么
    window.setInterval是一个JavaScript方法,它允许您周期性地执行指定的函数或代码块。该方法以指定的时间间隔(以毫秒为单位)触发指定的函数。window.setInterval的语法如下:javascriptsetIn...
    99+
    2023-07-12
  • 什么是DHCP?什么是DHCP服务器
    DHCP是Dynamic Host Configuration Protocol(动态主机配置协议)的缩写,它是一种网络协议,常用于...
    99+
    2023-09-05
    DHCP服务器
  • java中什么是类,什么是对象
    类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个...
    99+
    2020-06-27
    java入门 java 对象
  • colspan_colspan是什么意思?作用是什么
    colspan是HTML中的一个属性,用于指定一个单元格横跨的列数。作用是将一个单元格合并为多个列,使得该单元格占据更大的水平空间。...
    99+
    2023-08-22
    作用
  • css是什么?有什么用?
    CSS,即层叠样式表(Cascading Style Sheets),是一种用于网页设计的样式语言。通过CSS,你可以改变HTML页面上各个元素的外观、布局和行为。CSS最初是由赛迪公司(斯佩克特公司)的开发者创建的,并于1996年成为一项...
    99+
    2023-05-14
  • PXE是什么
    PXE是一种网络引导协议,全称为"Preboot Execution Environment"(预启动执行环境)。它允许计算机通过网...
    99+
    2023-09-09
    PXE
  • asp是什么
    ASP是Active Server Pages的缩写,是一种由微软开发的服务器端脚本语言。ASP可以嵌入HTML页面中,用于动态生成...
    99+
    2023-09-09
    asp
  • 什么是WePY?
    WePY(微信小程序开发框架)是一个基于组件化开发思想的微信小程序开发框架。它类似于Vue.js框架,通过封装小程序原生的API,提供了更加简洁、高效的开发方式。 WePY的主要特点包括: 组件化开发:WePY将页面拆分为多个组件,每个组...
    99+
    2023-09-14
    微信小程序 小程序 微信
  • JSESSIONID是什么
    JSESSIONID实际上是一个cookie,服务器用来记录用户session。 什么时候种下JSESSIONID? 创建会话时种下JSESSIONID。即调用request.getSession()...
    99+
    2023-09-15
    服务器 java 前端
  • 什么是gitlab
    GitLab是一款基于Git版本控制系统的Web-based管理工具,也是世界上最流行的开源应用之一。它拥有完整的项目管理功能,如代码合并、代码审查、问题跟踪、Wiki、CI/CD等,并且支持自托管、云托管、社区版和企业版等多种形式。Git...
    99+
    2023-10-22
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作