分布式任务框架

quartz

quartz 的常见集群方案如下,通过在数据库中配置定时器信息, 以数据库悲观锁的方式达到同一个任务始终只有一个节点在运行,

保证节点高可用 (HA), 如果某一个几点挂了, 其他节点可以顶上
缺点:

同一个任务只能有一个节点运行,其他节点将不执行任务,性能低,资源浪费
当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重。性能会很低下
quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展
在这里插入图片描述

xxl-job

由个人开源的一个轻量级分布式任务调度框架 ,主要分为 调度中心和执行器两部分 , 调度中心在启动初始化的时候,会默认生成执行器的RPC代理

对象(http协议调用), 执行器项目启动之后, 调度中心在触发定时器之后通过jobHandle 来调用执行器项目里面的代码,核心功能和elastic-job差不多

,同时技术文档比较完善

系统架构图:
在这里插入图片描述

elastic-job

elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。

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

Elastic-Job-Cloud使用Mesos + Docker(TBD)的解决方案,额外提供资源治理、应用分发以及进程隔离等服务

亮点:

基于quartz 定时任务框架为基础的,因此具备quartz的大部分功能
使用zookeeper做协调,调度中心,更加轻量级
支持任务的分片
支持弹性扩容 , 可以水平扩展 , 当任务再次运行时,会检查当前的服务器数量,重新分片,分片结束之后才会继续执行任务
失效转移,容错处理,当一台调度服务器宕机或者跟zookeeper断开连接之后,会立即停止作业,然后再去寻找其他空闲的调度服务器,来运行剩余的任务
提供运维界面,可以管理作业和注册中心。
elastic-job结合了quartz非常优秀的时间调度功能,并且利用ZooKeeper实现了灵活的分片策略。除此之外,还加入了大量实用的监控和管理功能,

SchedulerX

分布式任务调度 SchedulerX 2.0 是阿里巴巴基于 Akka 架构自研的新一代分布式任务调度平台。您可以使用 SchedulerX 2.0 编排定时任务、工作流任务、进行分布式任务调度。

SchedulerX主要提供调度、执行和运维三方面的功能。

分布式计算
提供简单、易用的分布式编程模型,可以进行大数据跑批。

单机:随机挑选一台机器执行。详情请参见单机。
广播:所有机器同时执行且等待全部结束。详情请参见广播。
Map模型:类似于Hadoop MapReduce里的Map。只要实现一个Map方法,简单几行代码就可以将海量数据分布式到多台机器上执行。详情请参见Map模型。
MapReduce模型:MapReduce模型是Map模型的扩展,废弃了postProcess方法,新增Reduce接口。所有子任务完成后会执行Reduce方法,可以在Reduce方法中返回该任务实例的执行结果,或者回调业务。详情请参见MapReduce模型。
分片运行:类似Elastic-Job模型,控制台配置分片参数,可以将分片平均分给多个客户端执行。支持多语言版本。详情请参见多语言版本分片模型。

对比:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值