前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式调度中间件xxl-job(一):初识Xxl-Job

分布式调度中间件xxl-job(一):初识Xxl-Job

作者头像
闲宇非鱼
发布2022-02-08 11:26:40
1.9K0
发布2022-02-08 11:26:40
举报
文章被收录于专栏:Brucebat的伪技术鱼塘

人生苦短,不如养狗

  在上一篇常见分布式任务调度工具浅析中,简单地分析了一下目前比较热门的三个分布式调度中间件。今天,我们就从大众点评许雪里大佬开源的xxl-job开始学习。   什么?你问我为什么从xxl-job开始学习?别问,问就是简单,好学,易上手。

一、基本概念

  在上一篇文章中,闲鱼已经简要的介绍了一下xxl-job。这里我们再详细的介绍一下这款优秀的分布式调度中间件。   在开始xxl-job的学习之前,我们先来看三个作业调度的重要组成部分。

  • 作业:作业,也即是我们所说的任务,是需要计算机去执行的具体的业务逻辑。(操作系统中常用作业这样一个概念)
  • 调度器:调度器(Trigger),作业调度系统中重要组成部分,根据预设好的调度规则调用对应的执行器执行作业。
  • 执行器:执行器(Executor),作业调度系统中重要组成部分,接受调度器的调度,是具体作业的执行者。

  根据调度系统的架构不同,可以将作业调度分为:中心化和非中心化。

  • 中心化:中心化的调度系统存在调度中心的概念,所有的调度都是由调度中心进行统筹协调。
  • 去中心化:去中心化的调度系统没有调度中心的概念,所有的任务都能够实行自治,即自行判断是否要执行任务。

  在集群环境下,根据调度器作业调度方式不同,可以将作业调度分为:作业竞争和作业预分配。

  • 作业竞争:多个执行器竞争一个任务,同一个任务只能由一个执行器竞争获取然后执行。
  • 作业预分配:调度器预先分配好任务执行节点,不需要执行器进行竞争执行权。

二、什么是xxl-job

1. 简介

  xxl-job是大众点评许雪里开源的一款分布式调度中间件。根据上面的分类,xxl-job属于中心化、作业竞争的分布式调度中间件。下面是xxl-job最新版本的架构图:

  从上面的架构图中我们可以看到,在xxl-job中,作业调度是由调度中心来进行统筹协调的,在调度中心中进行调度器和执行器的管理和注册。同时为了调度中心能够感知到对应的作业,xxl-job还提供了服务注册和服务发现功能。执行器完成任务执行之后,会将执行结果回调给调度中心,用户可以在调度中心查看任务的执行结果。除了任务执行结果,通过xxl-job中提供的log api,调度中心还可以获得执行器的执行日志,用户可以很方便地在调度中心中查看对应任务的执行日志。   由于xxl-job是一个作业竞争的分布式调度中间件,这里它没有使用zookeeper,而是使用数据库。通过数据库锁来让每个执行器竞争任务的执行权,保证每个任务每次只有一个节点能够执行任务。

2. 功能特性

  在上面的小节中我们简单地介绍了xxl-job的架构和调度相关的功能。下面我们来具体看下对于业务系统而言,xxl-job集成了哪些非常优秀的功能:

  • 动态化:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效。
  • 事件触发:除了”Cron方式”和”任务依赖方式”触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。
  • Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志。
  • 脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本。
  • 自定义任务参数:支持在线配置调度任务入参,即时生效。
  • 邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件,除此以外,还提供了报警方式的扩展,比如钉钉机器人等。
  • 运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等。

  闲鱼这里挑选了一些业务系统可能较为关系的功能,其他的功能,大家可以到官方文档分布式任务调度平台XXL-JOB[1]中具体了解一下。   除了上述的功能,在调度中心中还可以查看每个应用下的任务列表。由于每个执行器(集群模式下为执行器组)会对应多个调度器,每个调度器是对应一个作业,所以可以通过执行器来检索出所有该执行器对应的调度器,也即任务。而在xxl-job中执行器则与对应的应用相关联,所以使用通过执行器就可以查出应用下所有的任务。具体如下图所示:

三、总结

  总的来看,xxl-job的学习难度和使用难度都相对较低,社区的活跃度也非常的高(看来大家都是喜欢简单易上手的)。相比弱化调度和运维中心概念的elastic-job,xxl-job的运维中心围绕业务系统的常见需求,集成了很多监控、管理和报表等相关的功能。这也是为什么闲鱼选择xxl-job而不是elastic-job来先进行研究学习。   由于网上有太多关于xxl-job安装使用的教程,下一篇我们就直接开始源码的学习。想了解xxl-job安装使用的同学可以自行查询文档。

参考资料

[1]分布式任务调度平台XXL-JOB: https://www.xuxueli.com/xxl-job/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Brucebat的伪技术鱼塘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基本概念
  • 二、什么是xxl-job
    • 1. 简介
      • 2. 功能特性
      • 三、总结
        • 参考资料
        相关产品与服务
        消息队列 TDMQ
        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档