分布式任务调度平台XXL-JOB

为获得更好的阅读体验,请访问原文:传送门

一、分布式任务调度概述

什么是任务调度平台

任务调度是指基于给定的时间点,给定的时间间隔又或者给定执行次数自动的执行任务。我们可以思考一下在以下场景中,我们应该怎么实现:

  • 支付系统每天凌晨 1 点,进行一天清算,每月 1 号进行上个月清算;
  • 电商整点抢购,商品价格8点整开始优惠
  • 12306 购票系统,超过 30 分钟没有成功支付订单的,进行回收处理

为什么需要任务调度平台

定时任务是程序员不可避免的话题,很多业务场景需要我们某一特定的时刻去做某件任务。一般来说,系统可以使用消息传递代替部分定时任务(比如商品成功发货后,需要向客户发送短信提醒),两者有很多相似之处,一些场景下也可以相互替换,但是有一些不能:

  • 时间驱动/ 事件驱动: 内部系统一般可以通过事件来驱动,但如果涉及到外部系统,则只能使用时间驱动。如爬取外部网站价格,每小时爬一次。
  • 批量处理/ 逐条处理: 批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理,如移动每个月结算我们的花费。
  • 实时性/ 非实时性: 消息中间件能够做到实时处理数据,但是有些情况下并不需要实时,比如:vip 升级。
  • 系统内部/ 系统解耦: 定时任务调度一般是在系统内部,而消息中间件可用于两个系统间

并且对于分布式系统来说,如果处理不当,会存在同一系统不同节点之间定时任务相互影响的问题,再考虑上监控、日志、信息面板,加上不同系统之间管理维护的问题,自己实现一套的成本又上来了..所以我们可以考虑一些比较成熟的任务调度平台来使用。

任务调度框架选型

Java 领域主要分布式调度系统如下:

  1. xxl-job:是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展 。
  2. Elastic-Job: 当当开源的分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成;Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能;
  3. Saturn:是唯品会开源的一个分布式任务调度平台,在当当开源的Elastic Job基础上,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用以及分片并发处理;
  4. light-task-scheduler:阿里员工开源的个人项目,主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性
  5. Quartz: Java定时任务的标配。利用数据库的锁机制实现集群调度,业务代码需要考虑调度的逻辑,对业务代码有入侵。

在这之前,我是一个都不知道的..有很多文章对他们进行对比,我们就参考其中一篇(下 2),选择热门且成熟的 XXL-JOB 来上手研究一下。

二、XXL-JOB

概述

官方中文文档:http://www.xuxueli.com/xxl-job/

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

快速入门 - 本地运行

先定个小目标,先把它在本地跑起来先。

第一步:下载代码到本地

找一个合适的目录,然后执行下列语句把代码下载到本地:

$ git clone https://github.com/xuxueli/xxl-job.git

第二步:执行初始化 SQL,再用 IDEA 打开

找到 /xxl-job/doc/db/table_xxl_job.sql 初始化 SQL 脚本,并在本地执行。

然后按照 Maven 格式将源码导入 IDEA,源码结构如下:

xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
    :xxl-job
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值