彻底解决5大开源痛点,阿里云发布任务调度 XXL-JOB 版

简介: 阿里云任务调度XXL-JOB版 迎来重磅发布,以任务调度SchedulerX为内核,0代码改造,完全兼容开源XXL-JOB客户端接入,解决开源XXL-JOB痛点问题。

概述

XXL-JOB 是国内非常流行的开源任务调度系统,GitHub 上 star 28k,Gitee 上 star 13k。XXLJOB 简单易上手,不但有控制台可以动态管理定时任务,还有一些开箱即用的可观测能力。但是把XXL-JOB应用在生产环境上,很多企业遇到了一些问题。因此他们期望能有一款企业版的 XXL-JOB 服务,不改变用户使用习惯,解决开源痛点,提供最小的迁移成本。于是,阿里云任务调度XXL-JOB版 迎来重磅发布,以任务调度SchedulerX为内核,0代码改造,完全兼容开源XXL-JOB客户端接入。

开源XXL-JOB的5大常见问题

调度量有限

开源XXL-JOB多个调度节点通过数据库抢锁,每次拉取部分调度任务,从而实现多个调度节点“协同式”运行任务。因为每次调度还是要进行数据库抢锁,调度节点负载无法打满,当调度量到一定程度,继续扩容调度节点,调度量也无法上升,存在瓶颈。

稳定性问题

  1. 开源XXL-JOB非常耗数据库,每次调度会在xxl_job_log表生成调度记录,100个秒级别任务,一天就能生成100*60*60*24=864w记录,比较容易把数据库拖垮:

image.png

  1. 开源XXL-JOB每次调度都需要捞取数据库数据,当数据库数据量大或其他原因导致查询缓慢时,就会导致任务漏触发的问题:

image.png

安全薄弱

XXL-JOB账号只有管理员和普通用户,且只支持用户名密码登录,对于想通过SSO登录,并且精细化管理用户权限的企业不太适用

image.png

并且XXL-JOB客户端接入,是整个集群共享一个AccessToken,很容易导致越权连到其他执行器组下。

邮件报警不及时

XXL-JOB只支持邮件报警,一般人不会实时关注邮件,任务失败没法及时通知到联系人容易导致线上故障。同XXL-JOB也不支持联系人管理,如果某个同事离职了,就需要修改所有任务的邮件配置,管理很麻烦。

image.png

版本间不兼容

XXL-JOB多个版本间不兼容,比如想把2.2.0升级到2.3.0以上版本,客户端编程接口发生了改动,升级改造量大:

image.png

更重要的是,服务端通信协议和数据库表结构都发生了改变,导致无法直接平滑升级,对于企业想要自己维护调度节点挑战非常大。

阿里云XXL-JOB有哪些优势

阿里云XXL-JOB版以SchedulerX为内核,兼容开源XXL-JOB的通信协议,提供0代码修改、无侵入托管开源XXL-JOB Executor的解决方案。不但解决了开源遇到的一系列痛点问题,还进行了许多的功能增强。

企业级可观测

阿里云XXL-JOB默认集成了云监控大盘、日志服务SLS、消息中心等多个云产品,对可观测能力做了增强,给用户企业级的可观测能力,可以更快收到通知、更快定位问题。

  • 报警服务:集成云监控报警能力,支持报警联系人,支持短信/电话/邮件/webhook报警方式。
  • 调度历史:通过数据库存储最近执行的历史记录,通过日志服务归档历史执行记录,可以查看最近2个月所有的调度历史。
  • 操作记录:集成阿里云操作审计服务,可以看到所有控制台/OpenApi 操作的历史事件。
  • 监控大盘:集成云监控/Prometheus 监控大盘能力,相对于开源只能看天级别的大盘,可以自定义周期粒度看到更精细化的大盘。

高可用

阿里云XXL-JOB久经考验,在内核层面解决了开源和生产上遇到的一些列稳定性问题。在架构层面采用同城多机房容灾、管控面数据面分离、数据多备份等技术,保证了集群高可用,SLA能做到99.95%以上

image.png

阿里云XXLJOB高可用架构

  1. 管控面负责将任务负载均衡到不同的数据面server上调度,以及server的容灾管理。
  2. 数据面server负责任务调度,不同server调度不同的任务。
  3. 管控面和数据面都做到多可用区容灾。
  4. 管控面挂了,不会影响存量任务调度。
  5. 数据面某个server或者某个可用区的server全挂了,管控面都能切换到另一个可用区的server调度。

高安全

阿里云XXL-JOB从控制台登录到客户端接入都做了安全增强:

  • 多租户:支持阿里云账号、RAM账号、角色账号、SSO单点登录,相对于开源的用户名密码登录更加安全。
  • RAM权限:支持RAM权限管理,可以做到不同资源,不同操作级别的细粒度权限控制,比如给部分用户只读权限。
  • 客户端鉴权:每个应用使用不同的AccessToken鉴权,相对于开源整个集群级别鉴权,更加安全。

高性能

阿里云XXL-JOB采用分布式架构,不同的调度节点负责不同的任务调度,不需要进行抢锁,经我们压测结果验证,在同样的规格下,性能比开源高一倍以上。且阿里云XXL-JOB可以通过水平扩容调度节点支撑更多的任务调度,没有性能瓶颈。

功能增强

阿里云XXL-JOB不但提供高可用、高安全、高性能、和可观测的企业级能力,还做了许多的功能增强,与开源详细对比可以看下表:

功能集

功能

开源XXLJOB

阿里云XXLJOB

兼容性

协议兼容

不同版本间不兼容

兼容v2.2.x以上所有版本

基础能力

调度类型

cron、fixed_rate

cron、fixed_rate、fixed_delay、one_time、api

时区

自定义日历

指定开始时间

广播分片

不支持聚合

支持聚合

运维动作

手动运行、停止

手动运行、停止、原地重跑、重刷数据

工作流

可观测能力

调度事件

操作记录

日志

存在客户端,每次执行产生一个小文件,有性能和稳定性问题

存储在日志服务,支持查看最近2个月日志

报警监控

报警方式

邮件

邮件、webhook、短信、电话

报警联系人

集成云监控联系人

报警历史

稳定性

任务并发控制

客户端控制,多个executor无法做到幂等执行

服务端控制,可以做到全局幂等执行

应用限流

优雅下线

任务灰度

阿里云XXLJOB与开源功能对比表

如何平滑迁移到阿里云XXLJOB

阿里云XXL-JOB提供了自建平滑迁移方案,不需要开发介入,只需要运维操作,就可以做到0代码修改,平滑迁移到云上。

前提条件

将自建XXL-JOB迁移到阿里云XXL-JOB,需要将您的Executor部署到有阿里云网络的机器上。如果您是阿里云用户,默认网络就通了。如果您的机器在其他云上或者自建IDC机房,也可以通过cen网络来和阿里云网络打通。

步骤一:从自建XXLJOB导出任务

我们提供了一个迁移工具,可以批量导出自建XXLJOB中所有任务信息,转成阿里云XXLJOB的文件格式

image.png

步骤二:导入到阿里云XXL-JOB

登录阿里云XXL-JOB控制台,点击任务管理->导入任务,将步骤一导出的文件一键导入到阿里云上

image.png

步骤三:重新部署应用

在阿里云XXL-JOB控制台上,找到接入配置信息,如下图

image.png

重启Java应用,通过-D参数带上xxl.job.admin.address等配置,就能将Executor接入到阿里云XXL-JOB了。

目录
相关文章
|
分布式计算 并行计算 数据库
Schedulerx2.0分布式计算原理&最佳实践
1. 前言 Schedulerx2.0的客户端提供分布式执行、多种任务类型、统一日志等框架,用户只要依赖schedulerx-worker这个jar包,通过schedulerx2.0提供的编程模型,简单几行代码就能实现一套高可靠可运维的分布式执行引擎。
27846 2
|
Java fastjson API
Springboot 整合 xxljob 动态API调度任务(进阶篇)
Springboot 整合 xxljob 动态API调度任务(进阶篇)
8524 0
Springboot 整合 xxljob 动态API调度任务(进阶篇)
|
Java 调度 Maven
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
2110 0
|
10月前
|
人工智能 弹性计算 资源调度
LangChain脚本如何调度及提效?
在大模型时代,Python成为了主要的编程语言,最有代表性的就是LangChain大模型开发框架。本文章介绍如何有效的进行LangChain脚本管理、调度、提升资源利用率、限流等能力。
293 74
|
10月前
|
NoSQL 测试技术 Redis
Redis批量删除Key的三种方式
Redis批量删除Key是优化数据库性能的重要操作,本文介绍三种高效方法:1) 使用通配符匹配(KEYS/SCAN+DEL),适合不同数据规模;2) Lua脚本实现原子化删除,适用于需要事务保障的场景;3) 管道批量处理提升效率。根据实际需求选择合适方案,注意操作不可逆,建议先备份数据,避免内存溢出或阻塞。
|
存储 监控 数据可视化
常见的分布式定时任务调度框架
分布式定时任务调度框架用于在分布式系统中管理和调度定时任务,确保任务按预定时间和频率执行。其核心概念包括Job(任务)、Trigger(触发器)、Executor(执行器)和Scheduler(调度器)。这类框架应具备任务管理、任务监控、良好的可扩展性和高可用性等功能。常用的Java生态中的分布式任务调度框架有Quartz Scheduler、ElasticJob和XXL-JOB。
5572 66
|
Java 调度 数据库
SpringBoot整合XXL-JOB【05】- 任务分片
在实际业务中,批量定时任务可能因上一批任务未完成而影响业务。为解决此问题,本文介绍如何使用Xxl-job对批量任务进行分片处理,通过分片广播形式调度集群机器并行执行任务,大幅提升执行效率。具体步骤包括环境准备、添加依赖和配置、声明实体类与查询类,以及改造业务逻辑实现分片查询。测试结果显示,分片处理将两千条数据的执行时间从30秒缩短至15秒,性能提升显著。
2177 13
SpringBoot整合XXL-JOB【05】-  任务分片
|
分布式计算 监控 大数据
任务调度scheduleX
【8月更文挑战第22天】
2535 0
|
监控 Java API
死磕xxl-job(一)
死磕xxl-job(一)
|
SQL Shell 数据库连接
死磕xxl-job(二)
死磕xxl-job(二)
1365 0

热门文章

最新文章