首先我们来看一个现成的框架:ElasticJob,有一个跟他齐名的 xxljob,这个咱们以后再抽空介绍。
1. ElasticJob
1.1 简介
ElasticJob 是一个分布式作业调度解决方案,它的官网是:
- http://shardingsphere.apache.org/elasticjob
Elastic Job 的前身是由当当开源的一款分布式任务调度框架 dd-job,不过在 2020 年 5 月 28 日加入到了 Apache 基金会,成为 Apache 下 的 一个开源项目:
- https://shardingsphere.apache.org/
ElasticJob 通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。
使用 ElasticJob 能够让开发工程师不再担心任务的线性吞吐量提升等非功能需求,使他们能够更加专注于面 向业 务 编码设计;同时,它也能够解放运维工程师,使他们不必再担心任务的可用性和相关管理需求,只通过轻松的增加服务节点即可达到自动化运维的目的。
ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。
其中 ElasticJob-Lite 定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务:
ElasticJob-Cloud 则采用自研 Mesos Framework 的解决方案,额外提供资源治理、应用分发以及进程隔离等功能:
ElasticJob-Lite VS ElasticJob-Cloud:
ElasticJob-LiteElasticJob-Cloud无中心化是否资源分配不支持支持作业模式常驻常驻 + 瞬时部署依赖ZooKeeperZooKeeper + Mesos
它的各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署(即 ElasticJob-Lite 和 ElasticJob-Cloud 使用相同的 API,主要是部署方式不同而已)。
1.2 功能列表
-
弹性调度
-
支持任务在分布式场景下的分片和高可用
-
能够水平扩展任务的吞吐量和执行效率
-
任务处理能力随资源配备弹性伸缩
-
资源分配
-
在适合的时间将适合的资源分配给任务并使其生效
-
相