美文网首页
2022-05-12_分布式任务调度组件XXLJob学习笔记总结

2022-05-12_分布式任务调度组件XXLJob学习笔记总结

作者: kikop | 来源:发表于2022-05-13 17:23 被阅读0次

    20220512_分布式任务调度组件XXLJob学习笔记总结

    1概述

    XXL-JOB 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。对作者的开源精神表示感谢。

    闲来无事,通过对其源码的学习理解,概况有几大特点,值得我们好好学习:

    1. 基于Netty实现调度中心与业务模块的高效通信
    2. 调度中心HA集群
    3. 多种路由策略的灵活选择
    4. 巧妙的实现父子线程变量的传递
    5. 线程池的灵活运用
    6. 调度中心任务的及时派发
    7. 自定义任务延时
    8. 任务的远程停止与终止

    1.1高效通信

    调度中心作为客户端,业务模块内嵌NettyHttp服务器。客户端向服务端发起请求。

    1.2调度中心HA

    使用的排它锁,保证集群分布式调度的一致性(目前没有HA识别功能)。

    1.3多种路由策略的灵活选择

    随机、轮询、第一个、最后一个、故障转移、忙碌转移、分片广播、一致性hash、最近最久未使用:频率/次数、最不经常使用:基于时间

    通过上述的自定义路由策略,达到最大程度的业务需求。

    1.4巧妙的实现父子线程变量的传递

    通过InheritableThreadLocal实现父子线程变量的传递

    1.5线程池的灵活运用

    该组件大量利用ThreadPoolExecutor线程池,借助LinkedBlockingQueue阻塞队列实现任务的处理。

    1.6调度中心任务的及时派发

    自定义算法,通过两个线程(scheduleThread、ringThread),确保调度中心任务的及时派发

    1.7自定义任务延时

    基于quartz中CronExpression实现自定义任务延时

    1.8任务的远程停止与终止

    2代码示例

    3总结

    XXL-JOB的卓越表现,主要是基于Netty的多路复用、异步事件驱动NIO通信框架以及作者优秀的编成功底和技术栈。

    3.1个人思考

    1. 调度中心使用锁,主要是为了保证集群分布式调度的一致性,在没有启用HA,是否可关闭该悲观锁功能。
    2. scheduleThread的最大执行周期为:5秒,导致任务停止有可能不那么及时,最坏情况下要等5秒。任务停止以后,无法一次性任务全部终止,只能在调度日志中手动一个一个处理,是否在单条日志操作中增加该功能。

    参考

    1XXL-JOB分布式任务调度平台(真·保姆级教程)

    https://mp.weixin.qq.com/s/ccr88xbN5a5M56Yv2RB5Jg

    https://gitee.com/xuxueli0323/xxl-job

    2Netty自带的解码器HttpObjectAggregator

    https://blog.csdn.net/xianyu_x/article/details/103906936

    相关文章

      网友评论

          本文标题:2022-05-12_分布式任务调度组件XXLJob学习笔记总结

          本文链接:https://www.haomeiwen.com/subject/wnluurtx.html