初识xxl-job

XXL-JOB

  xxl-job是xuxueli同学开源的XXL系列中的一员,是一个分布式任务调度平台。关于xxl-job的使用及介绍在xxl-job官方的文档中有了非常详尽,易懂的介绍,实在没有什么可以复述的了,学习请看文档。

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

  这里我只简单记录一下我在搭建xxl-job中遇到的一些问题及感受。

  1,一开始不明白分布式任务调度平台是个什么东西,它的业务需求又是什么?当项目跑起来及实验了几个demo之后才逐渐弄明白了。它的目的是在于能够通过web端直接控制(调度)任务的活动。相较于之前,任务的启动是由于定时器的控制或由于事件的触发(写死在代码中),当项目布起来之后实际上任务相较于运维人员是处于一种不可控的状态,总会有些需求要求运维人员需要立刻调度任务或结束一些定时任务。所以任务调度平台相较于之前对任务的处理是一种补充和替换的方式,具有更高的可控性。分布式是因为很多项目本身就是分布式的,且分布式调度平台(及执行器集群)拥有更好的稳定性及高并发性。

  2,在执行器中,相同AppName,不同IP或端口的执行器为同一个执行器集群。当在调度中心注册多个不同AppName的执行器时候,调度中心永远也只会使用第一个AppName的执行器集群,无论是否该执行器集群是否全部宕机或无效。任务中的调度方式(轮询,随机等。。。)只在集群内生效。

  3,在调度中心终止任务的时候,是通过在执行内部抛出(InterruptedException)异常来实现的,如果在执行器的语法中如果有使用到try…catch一定要注意该问题,不能让(InterruptedException)异常被try…catch消化掉,处理过程示例如下:

try{
    // TODO
} catch (Exception e) {
    if (e instanceof InterruptedException) {
        throw e;
    }
    logger.warn("{}", e);
}

  4,关于分片广播与动态分片,第一次接触分片这个东西感觉很有意思。大致意思是这样的,正常的任务一般是交给一个执行器去执行就够了,但是选择分片广播模式的时候,调度中心会同时调用多个执行器,并给每个执行发送总分片数,与该执行器得到的分片值(即一到分片总数之间的一个数字)。它的解决的需求在于并发处理数据。比如需要处理一万条数据,我分片给10个执行器执行,那每个执行器只需要执行一千条数据即可。

  5,GLUE模式,很有趣的模式。GULE模式的作用在于你可以在web端直接写一个任务的代码,然后通过编译,动态的加入到执行器中执行。所以当你有一些临时需要处理的任务时,完全不需要重写执行器代码,编辑,部署。

  6,xxl-job还提供了一些调度中心的接口API,有空了还是要看看。谨记。

  7,再抄一些东西过来

  项目结构

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

  架构V1.8
这里写图片描述


  初识皮毛,理解不深,谨以文字记录已走马观花一番~

猜你喜欢

转载自blog.csdn.net/u014296316/article/details/80072366