XXL-JOB

分布式调度任务

有些话、适合烂在心里 提交于 2020-10-29 06:01:41
1什么是分布式任务调度 1.1任务举例-定时任务 1.1.1实际案例 1.1.1.1网贷-日终任务 1.1.1.2其它业务-全日频繁 1.1.1.3 Crontab、shell 1.2产生问题 PK 解决问题 1.2.1迎面遇到第一个问题:集群重复执行 每台虚机在同一时间都会执行定时任务: Tomcat Nginx Tomcat 尝试解决:将任务单独拆出放入一台虚机(TASK)。 Nginx Tomcat TASK Tomcat 产生新的问题: 1.即便TASK 100%可靠永远不宕。也有极大的停机风险,不确定在停机期间是否有任务被遗漏( misfire )。 2.任务更多,更复杂,占越来越多的资源,性能问题凸显,任务队列阻塞风险。 1.2.2Quartz集群 Nginx Tomcat Tomcat DB(quartz) 之后看了眼quartz官方logo,感觉自己萌萌的。 1.2.3管理、调度任务产生问题 萌不过三天。发现这个定时任务策略要修改, 同样,下面这个任务不需要做,取消掉 也无法及时监控:报错了吗,运行成功了吗? 随着业务发展暴露出越来越多的问题: 例如: ---- 截图摘自沈建林“分布式调度系统介绍”中的五个问题 1.2.4解决问题 解决问题 解决问题 集思广益造轮子: Quartz,Xxl-job,elastic-job,tbschedule,uncode

追源码的平凡之路

时光总嘲笑我的痴心妄想 提交于 2020-10-28 13:55:20
在斯坦福大学, 乔布斯做了一场我认为他最精彩的演讲之一 (另一场可能是iphone的问世发布会)。他讲了第一个故事 "connecting the dots" 你不可能充满预见地将生命的点滴串联起来;只有在你回头看的时候,你才发现这些点点滴滴之间的联系。所以,你要坚信,你现在所经历的将在你未来的生命中串联起来。你不得不相信某些东西,你的直觉、命运、生活、因缘际会……正是这种信仰让我不会失去希望,它让我的人生变得与众不同。 什么是连接生命中的点滴呢?我的理解:当一个人的能力还在上升期, 格局和视野还不够广阔的时候,他需要专注当前的事情,并且把每件事情做到他当时的能力所能做到的极限,也许当时没有那么大的成就感,但"蓦然回首,那人却在灯火阑珊处"。 十年前刚进入IT这个行业的时候,我是一个很普通的工程师,脑袋也不灵光,工作老是得不到要领,我的同学智商很高,他看一次代码基本就会写了,我得花很长时间去消化吸收,我对自己能不能在这一行生存下去都产生了质疑。 没有办法,只能勤能补拙,笨鸟先飞, 当遇到问题的时候, 我都抱着死咬不放的心态去寻找最佳解决方案, 洗澡的时候,睡觉的时候,吃饭的时候,甚至上厕所的时候都会去思考。很自然的,"追"源码也成为我程序生命中的一部分。 阅读过很多源码,和大家分享几个对我的职业影响比较大的追源码的经历。 正文 1 Druid 连接池 这是在2013年

分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)

时光怂恿深爱的人放手 提交于 2020-10-25 04:04:38
分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn) 参考文章: (1)分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn) (2)https://www.cnblogs.com/rainswinds/p/10930495.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4438370/blog/4651504

3千字带你搞懂XXL-JOB任务调度平台

余生长醉 提交于 2020-10-21 13:27:22
简介: 一篇文章带你认识分布式任务调度平台XXL-JOB! 思维导图 一、概述 在平时的业务场景中,经常有一些场景需要使用定时任务,比如: 时间驱动的场景:某个时间点发送优惠券,发送短信等等。 批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。 固定频率的场景:每隔5分钟需要执行一次。 所以定时任务在平时开发中并不少见,而且对于现在快速消费的时代,每天都需要发送各种推送,消息都需要依赖定时任务去完成,应用非常广泛。 二、为什么需要任务调度平台 在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题: 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等 而且在现在分布式的架构中,有一些场景需要分布式任务调度: 同一个服务多个实例的任务存在互斥时,需要统一的调度。 任务调度需要支持高可用、监控、故障告警。 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。 显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。 elasticjob由当当网开源,目前github有6.5k的Star,使用的公司在官网登记有76家。 跟xxl-job不同的是, elasticjob是采用zookeeper实现分布式协调 ,实现任务高可用以及分片。

xxl-job总体还可以,轻量级,应能满足需求,有几个关键的能力

▼魔方 西西 提交于 2020-10-14 22:57:51
xxl-job总体还可以,轻量级,应能满足需求,有几个关键的能力 1、内部多线程,多任务可在单个执行器上并发执行 2、支持简单的任务依赖关系,工作流 3、支持多语言Java、Shell、Python等 4、支持单实例调度(可以解决业务中台多实例部署的分布式锁问题)、分片调度 5、有界面,支持多租户隔离,每个租户管理自己的执行器,互相不影响 6、问题:普通用户没有权限管理自己的执行器,做成多租户模式需要提前向admin申请分配执行器名称 其他的工作流调度系统,Argo、Airflow、ooize、AZKaban、Luigi、elastic-job、quartz等 其中 Argo是K8S生态的工作流调度新秀,功能非常完善,git活跃度非常高 来源: oschina 链接: https://my.oschina.net/u/4332858/blog/4279865

细数那些使用过的定时器

时光怂恿深爱的人放手 提交于 2020-10-05 23:56:09
前言 何为定时器,说白了就是指定一个延迟时间,到期执行,就像我们早上定的闹铃一样,每天定点提醒我们起床;当然在我们各个系统中也是无处不在,比如定时备份数据,定时拉取文件,定时刷新数据等等;定时器工具也是层出不穷比如Timer,ScheduledExecutorService,Spring Scheduler,HashedWheelTimer(时间轮),Quartz,Xxl-job/Elastic-job等;本文将对这些定时器工具做个简单介绍和对比,都在哪些场景下使用。 Timer Timer可以说是JDK提供最早的一个定时器了,使用简单,功能也相对来说比较简单;可以指定固定时间后触发,固定时间点触发,固定频率触发; Timer timer = new Timer(); timer.schedule( new TimerTask() { @Override public void run () { System.out.println(System.currentTimeMillis() + " === task1" ); } }, 1000 , 1000 ); 时间默认为毫秒,表示延迟一秒后执行任务,并且频率为1秒执行任务;Timer内部使用TaskQueue存放任务,使用TimerThread单线程用来执行任务: private final TaskQueue queue =

分布式定时任务—xxl-job学习(一):简单demo搭建

↘锁芯ラ 提交于 2020-08-17 23:51:56
分布式定时任务—xxl-job学习(一):简单demo搭建 一、xxl-job简介 1.1 xxl-job特性介绍 1.2 官方仓库+文档地址 二、简单搭建一个xxljob_demo 2.1 搭建调度中心 2.1.1 初始化“调度数据库” 2.1.2 配置部署“调度中心”xxl-job-admin 2.1.2.1 配置调度中心 2.1.2.2 部署xxl-job-admin项目 2.1.2.3 调度中心集群(可选) 2.2 搭建执行器项目demo 2.2.1 创建一个springboot的maven项目 2.2.2 执行器配置 2.2.3 执行器组件配置 2.2.4 开发一个简单的demo定时任务 2.2.5 部署 2.2.6 调度中心配置相应任务 2.2.6.1 新建一个执行器 2.2.6.2 新建一个任务 2.2.6.3 查看调度日志 2.2.6.4 查看执行日志 2.2.6.5 终止运行中的任务 三、彩蛋 一、xxl-job简介 XXL-JOB是大佬许雪里开源的一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 1.1 xxl-job特性介绍 Features特性: 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状态、启动/停止任务

分布式定时任务—xxl-job学习(二):源码分析——执行器的启动过程

谁说胖子不能爱 提交于 2020-08-14 20:31:10
分布式定时任务—xxl-job学习(二):源码分析——执行器的启动过程 前言 一、执行器的启动 1.1 分析核心类XxlJobSpringExecutor 1.1.1 initJobHandlerRepository() 1.1.2 initJobHandlerMethodRepository() 1.1.3 GlueFactory.refreshInstance(1) 1.1.4 super.start() 1.2 分析核心类XxlJobExecutor 1.2.1 XxlJobFileAppender.initLogPath(logPath) 1.2.2 initAdminBizList(adminAddresses, accessToken) 1.2.3 JobLogFileCleanThread.getInstance().start(logRetentionDays) 1.2.4 TriggerCallbackThread.getInstance().start() 1.2.5 initEmbedServer(address, ip, port, appname, accessToken) 1.3 分析EmbedServer.start(address, port, appname, accessToken) 1.3.1

分布式任务调度平台XXL-JOB快速搭建教程

有些话、适合烂在心里 提交于 2020-08-13 01:03:44
1. XXL-JOB简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。它的有两个核心模块,一个模块叫做调度中心,另外一个模块叫做执行器,它把任务调度和任务执行分成两个部分。这样调度模块只需要负责任务的调度属性,触发调度信号。执行模块只需要接收调度信号,去执行具体的业务逻辑,两者可以各自的进行扩容和缩容。图1是一张来自官方的架构图。 2. XXL-JOB搭建 既然是一个分布式调度平台,肯定会有一个调度中心,当然执行器(被调度者)也是必不可少的,可以参考架构图。所以,使用xxl-job搭建一个demo,也必须有两个端,下面本文分别从准备工作、搭建“调度中心”、搭建“执行器”三个部分进行说明。 2.1 准备工作 2.1.1 下载源码 源码地址: https://github.com/xuxueli/xxl-job 我使用的源码是2.2.0版本,这是目前最新的release版本。 源码包含了文档(数据库初始化脚本、官方文档、架构图等)、调度中心源码、核心core、各个版本的执行器源码。如图2所示: 2.1.2 数据库准备 数据库脚本在doc路径下,将其执行之后可以创建一个数据库,如图3所示: 2.2 搭建调度中心 2.2.1 配置调度中心 将数据库连接信息和报警信息配置成自己的,配置文件如下:

WeBank/Schedulis

瘦欲@ 提交于 2020-08-09 15:55:25
简介 Schedulis 是一个基于 LinkedIn 的开源项目 Azkaban 开发的工作流任务调度系统。该调度系统具备高性能,高可用(去中心化多调度中心和多执行器)和多租户资源隔离等金融级特性;现已被集成到数据应用开发门户 DataSphere Studio 。 Schedulis 支持常规的 Command Shell 和 Linkis(HadoopMR、 Hive、Spark、Sqoop、 Python)大数据任务;同时还支持特色的数据检查和工作流之间的依赖任务;支持完善的告警和工作流执行策略;提供多种类型的参数设置,动态全局变量和简单易用的 UI。 与 DataSphere Studio 和 Linkis 的对接 DataSphere Studio 可以将编辑好的工作流一键发布到 Schedulis 进行调度,而 Schedulis 也实现了 Linkis 插件,用于向 Linkis 提交任务,这样使得 Schedulis 与 DataSphere Studio 和 Linkis 能够无缝衔接,从而实现数据应用开发全流程的连贯顺滑用户体验。 与业界现有调度系统的比较 下面将 Schedulis 和业界现有的调度系统做了个对比,包括:Azkaban, Dolphin, Airflow 和 Xxl-job 模块 描述 Schedulis Azkaban Dolphin