xxl-job源码解析系列 - 源码构建

 

@author:zxw

@email:[email protected]

@ Jishou University

xxl-job:https://www.xuxueli.com/xxl-job


1.前言

最近项目上使用到了xxl-job这个分布式任务调度的框架,所以也借此机会了解下该项目的使用原理。对于任何一个框架和开源项目都是建立在实际需求上而开发和使用。毕竟开发还是要创造价值为主,而不是什么炫酷就用什么。包括像alibaba最近比较火爆的开源项目nacos,sentinel等,其都是为了解决某些业务场景下的问题而产生。而对于别人能解决的业务场景在我们自己项目上则未必适用,所以为什么要用一定要贴合我们实际的项目来看。当然,我在项目中是用xxl-job主要用于定时任务。

2.设计思想

我们在开源码之前,还是得对该框架的整体有个概念。了解其运作方式和核心流程以及思想。以下基于我个人理解,其实使用过spring的同学的都知道,spring封装了一个定时任务的注解@@Scheduled来开启定时任务,创建一个类然后在里面使用,如果是简单的小项目那么肯定没问题,但是如果是分布式的项目,几十,上百个工程都使用了定时任务,那么管理和维护起来的是十分困难,如果有一个统一的平台对项目中所使用的定时任务进行统一的管理以及调度那么就极大的减少我们维护的成本了,这也是我们使用xxl-job的原因,当然引进中间件的框架的同时也会产生许多问题,例如增加开发难度,以及要维护中间件框架。

所以之前说框架的诞生都是贴合实际业务和需求产生,在看xxl-job的框架设计之前我们也可以想想如果我们要对自己项目的定时任务进行管理我们该怎么做以及怎么去设计,然后再参考一下作者的思路。

以下引用自官方文档

2.1 系统组成

  • 调度模块(调度中心) 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;

  • 执行模块(执行器) 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;

2.2 架构图

输入图片说明

3.项目构建

首先是从github上将源码fork到自己的仓库在clone到本地,接着使用idea将项目引入构建,下面是xxl-job的工程目录介绍(<!--摘自官方文档-->)。

- /doc :文档资料
- /db :“调度数据库”建表脚本
- /xxl-job-admin :调度中心,项目源码
- /xxl-job-core :公共Jar依赖
- /xxl-job-executor-samples :执行器,Sample示例项目(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)

目录如下

我们首先在目录:doc/db下找到table_xxl_job.sql文件,然后将其导入到数据库中,因为job-admin启动时调用的是我们本地的数据库,如果不导入该sql文件会报错。

当我们导入完sql文件后,可以找到admin工程启动后台项目了,如果有个人的需求可以修改application.peoperties文件进行数据库,端口等修改。

对于xxl-job的源码构建就讲到这,之后我们开始讲xxl-job的核心源码。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章