xxl-job的使用和比较

xxl-job的使用和比较

这篇开始介绍xxl-job分布式调度平台。

xxl-job介绍

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

—— 摘自xxl-job 官网

xxl-job使用

xxl-job 环境

  • Release 2.2.0
  • JDK 1.8
  • SpringBoot 2.2.6 RELEASE
  • MySQL 5.7.17(本机)
  • MySQL Driver 8.0.17 -> 5.1.6 (DriverClass 路径需改为 com.mysql.jdbc.Driver )
  • Maven 3.5

项目目录结构

  • xxl-job-admin 调度中心,可视化管理各执行器的执行任务,查看执行日志和数据报表等

  • xxl-job-core 核心功能,包括 自定义任务注解,执行器交互接口、接口本地实现以及接口远程调用实现,执行器的初始化等

  • xxl-job-executor-samples 执行器案例,包括 spring、springboot、无框架版本等执行器demo

支持的任务模式

  • Bean,基于Spring Bean的自定义注解@XxlJob实现Bean
  • GLUE模式(Java, Shell, Python, PHP, NodeJS、Powershell)在调度中心维护的源码进行执行的任务

执行频率的定制

  • 使用通用的cron表单式,进行执行频率的配置

使用步骤

  • 执行SQL脚本,创建表 (\xxl-job\doc\db\tables_xxl_job.sql)
  • 启动调度中心 xxl-job-admin
    1. 修改application.properties 中 MySQL 的配置(高版本MySQL请忽略此条)
    2. 执行启动类 XxlJobAdminApplication.java
    3. 登录地址 http://127.0.0.1:8080/xxl-job-admin
    4. 初始账号密码 admin 123456
  • 启动执行器 xxl-job-executor-sample-springboot
    1. 修改配置(可选)
      • 修改 appname
        • 同一执行器集群的标识符,application.properties 的 xxl.job.executor.appname
        • 修改调度中心的地址(实际部署时需要注意),application.properties 的 xxl.job.admin.address
        • 修改任务日志记录地址, application.properties 中的 xxl.job.executor.logpath
      • 执行启动类 XxlJobExecutorApplication.java

可以参照使用手册进行具体的操作

  • 执行器的注册
  • appname 下新建任务
    • Bean 任务
    • GLUE(Java) 任务
    • 触发任务执行
  • 查看日志
    • 调度日志
    • 执行日志(实时的)

xxl-job架构

从官方扒下来的架构

xxl-job的架构
调度中心

负责管理任务信息,按照调度配置发出执行请求。
实现了任务调度和任务执行的解耦,大大提升了系统的稳定性。
可视化管理任务信息,更灵活、动态地调整调度策略,同时提供了扩展功能(运行报表、告警接口、执行日志等)。

执行器

负责接收调度中心的请求并进行任务执行;
专注于任务的执行,业务解耦;
同时为调度中心提供了心跳、终止、实时日志等服务,减轻运维负担。

与本地定时任务比较

在定时任务总结中(上一篇),介绍了本地任务的实现和问题,以及简单的改进措施,可以与xxl-job进行简单的横向比较。

业务层面

本地的定时任务

  • 任务调度和执行耦合在一起,调度的及时性和准确性受任务数量和执行方式(一个线程内同步执行/单独线程池执行)影响较重
  • 和业系统深度绑定,各系统中的相似任务无法直接复用,利用率低

xxl-job

  • 任务调度和执行进行了解耦,拆分成了执行器 和 调度中心
  • 任务的实现与系统解耦,不再依赖具体的业务系统,相似任务可以集中起来,进行复用

可用性方面

本地定时任务

  • 原始版本,采用单节点执行,存在明显的单点问题
  • 分布式锁改进版,多节点抢占执行,不会有单点问题

xxl-job

  • 调度中心支持集群部署,保证调度可用型
  • 执行器都支持集群部署,可以根据任务特点选择不同的路由策略

性能方面

本地定时任务

  • 和业务系统绑定,执行性能会受到业务系统的影响

xxl-job

  • 性能不存在瓶颈,集群可做水平扩展
  • 官方说法,理论上默认配置下的调度中心,单机能够支撑 5000 任务并发运行稳定运行

运维方面

xxl-ob 提供了Job执行的数据报表、任务的具体执行日志、告警通知机制、失败重试的策略,大大减轻运维负担

小结

本篇紧接上篇内容,对xxl-job的使用、xxl-job的架构进行介绍,同时也和本地任务的进行了比较。

那么从下篇开始带着问题,深入源码进行学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值