工具篇--分布式定时任务 Xxl-job 与 ElasticJob的对比

本文对比了Xxl-job和ElasticJob的架构、作业模式(包括任务路由和分片)、日志记录机制,指出Xxl-job适合Spring项目,而ElasticJob更灵活且功能强大,适用于复杂定时任务。
摘要由CSDN通过智能技术生成


前言

本文对分布式调度任务 Xxl-job 与 ElasticJob的对比 进行介绍。


一、架构:

Xxl-job : cs 架构 ,分为客户端和服务端,是有中心的架构,客户端为执行job 任务的执行器实例;服务端可以进行单独的集群部署,服务端控制任务的触发,以及任务的分配,故障转移,日志记录等;服务端承接了大部分的工作;

在这里插入图片描述

ElasticJob: cs 架构,分为客户端和服务端,是无中心的架构;客户端为执行job 任务的执行器实例;服务端为集群的zookeeper ,其中zookeeper 保存注册任务的实例,任务的配置项,以及负责leader 的选举;任务具体有哪个实例去执行,是由leader (也是一个job 执行的实例)进行的分配; 任务的触发,以及任务的分配,故障转移,日志记录等都是由 elasticjob-lite-core 进行管理,客户端承接了大部分的工作;
在这里插入图片描述

二、作业:

Xxl-job :作业分为 广播作业 和 某个实例单独作业;其中广播作业在任务达到时间被触发时,会被发送到所有有效的实例;某个实例单独作业 只会被发送到某个实例中;

xxl-job 任务路由策略:
在这里插入图片描述

ElasticJob:作业分为 简单作业和 流式的作业,其中简单作业同xxl-job 相同,当任务达到时间被触发时,leader 会选择某个节点进行作业;与简单作业不同 流式作业 提供了两个方法当每一次任务触发,只要fetchData 能返回数据,则当前这次任务就会一直调用 processData 进行作业,直到 fetchData 返回为null 或者集合为空;

ElasticJob 注册到zookeeper 的任务实例:
在这里插入图片描述

ElasticJob 中有分片的概念,来弥补某个实例单独作业 其它实例空闲,可以将任务定义分片数量,分片数量可以大于job 实例数,从而提高并发性能;当某个分片接收到任务是,可以根据当前分片得到对应的参数,从而执行不同的业务逻辑处理;

import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.elasticjob.api.ShardingContext;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.springframework.stereotype.Component;


@Slf4j
@Component
public class MyJob implements SimpleJob {
    @Override
    public void execute(ShardingContext shardingContext) {

        // 分片参数 0=text,1=image,2=radio,3=vedio
        String  shardingParameter= shardingContext.getShardingParameter();
        String  jobParameter= shardingContext.getJobParameter();

        log.debug("job 执行 error,job名称:{},分片数量:{},分片:{},分片参数:{},jobParamer:{}", shardingContext.getJobName(), shardingContext.getShardingTotalCount(),
                shardingContext.getShardingItem(), shardingParameter,jobParameter);
        if ("text".equals(jobParameter)) {
            // do something by sharding
        }
        switch (shardingContext.getShardingItem()) {
            case 0:
                // do something by sharding item 0
                break;
            case 1:
                // do something by sharding item 1
                break;
            case 2:
                // do something by sharding item 2
                break;
            // case n: ...
        }
    }
}

三、日志记录:

Xxl-job : 通过http 请求通信,在服务端记录job 的执行情况,并生成日志记录,展现日志的执行情况;
在这里插入图片描述

ElasticJob: 需要单独在job 里定义 日志记录的数据源,从而在客户端的数据可以记录日志,需要部署对应 ElasticJob-Console 登陆后,配置对应的数据源,从而可以得到job 的执行情况;
在这里插入图片描述


总结

综合来看,Xxl-job 更适合于在 Spring 生态圈中使用的项目,提供了简洁易用的任务管理界面;而 ElasticJob 则更加灵活,功能更为丰富,适用范围更广泛,可以满足复杂的分布式定时任务需求。

### 回答1: xxl-jobelastic-job是两个不同的分布式任务调度框架。 xxl-job是一个国内开源的分布式任务调度平台,提供了任务调度、任务执行、任务监控、报警等功能,支持分布式部署,适用于大规模分布式任务调度场景。 elastic-job是一个国内开源的分布式任务调度框架,提供了分布式任务调度、分布式数据流处理、分布式数据分片等功能,支持多种任务类型,适用于大规模分布式任务调度和数据处理场景。 ### 回答2: xxl-jobelastic-job是两种开源分布式任务调度框架,它们都能够让用户方便地进行任务调度并且提高任务的执行效率。 首先,xxl-job是一款比较受欢迎的国内开源调度框架,它支持多种任务调度模式,包括定时调度、固定频率调度、Cron表达式调度等。同时, xxl-job还提供了一些方便的特性,如任务日志和执行器心跳检测等。作为一款较为成熟的调度框架,xxl-job还提供了完整的Web控制台,用户可以方便地添加和管理任务,并且在控制台上查看任务的执行情况和任务日志。 而elastic-job则是由阿里巴巴公司开源的任务调度框架,它提供了分布式的任务调度能力和高可用的服务治理特性。相比于xxl-jobelastic-job提供了更加灵活的任务调度能力,并且支持分布式任务的动态扩容,使得用户可以更加自由地进行任务调度。 该框架还提供了多种任务类型的支持,如简单任务、数据流任务、脚本任务等,使得用户能够更加方便地进行任务调度。类似于xxl-jobelastic-job同样提供了完善的控制台,用户可以在控制台上管理和监控任务的执行情况和任务日志。 虽然xxl-jobelastic-job都是比较成熟的任务调度框架,但它们在一些细节和特性上还存在差异。因此,用户需要根据自己的需求选择合适的框架,以实现最优的任务调度效果。 ### 回答3: xxl-jobelastic-job是两个广泛应用于分布式任务调度的开源项目。下面将从以下几个方面详细介绍xxl-jobelastic-job。 1.架构设计 xxl-job采用了任务调度器和任务执行器分离的架构设计,任务调度器通过定时发送调度请求到任务队列,任务执行器则通过轮询任务队列获取任务并执行。这种分离的设计方式使得任务调度和执行更加灵活,降低了系统的耦合度。同时,xxl-job还支持多种任务执行模式,包括BEAN模式、CMD模式以及GLUE模式。GLUE模式是一种基于注解和反射机制实现动态调用的方式,灵活性非常高,适用于各种场景。 elastic-job同样采用了分布式的架构设计,并且支持多种任务执行模式,包括在摆渡任务之间均匀地分配作业实例的AVG模式、指定分片序列号执行作业的EXECUTION模式以及动态调度分片和扩容缩容的SCRIPT模式。 2.可扩展性 xxl-job支持多种任务调度器集群模式,包括单机调度器、集群调度器、注册中心调度器和多级调度器。在高并发、大流量、高任务密度的场景下,可以灵活地配置多个任务调度器实例组成集群,提高系统的性能和可靠性。 elastic-job支持分片调度,可以根据作业实例和分片进行分布式并发执行,充分利用资源并提高效率。同时,elastic-job还支持作业分片的动态扩容、缩容,可以根据实际业务变化进行弹性调度。 3.可视化管理 xxl-job提供了可视化的任务管理界面,包括任务列表、任务日志、任务监控等模块,方便管理人员快速了解任务执行情况和进行操作。同时,xxl-job还提供了一套完整的API,方便二次开发和集成。 elastic-job同样提供了易于使用的控制台,支持多维度的作业监控、配置修改、状态管理等功能,降低了系统的运维成本。 总之,xxl-jobelastic-job都是优秀的分布式任务调度框架,在不同场景下都有着良好的应用效果。其中,xxl-job更注重任务分发和管理,适合于一些企业级业务场景;而elastic-job更注重分片执行和弹性调度,适合于一些需要高并发和动态调度的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值