美文网首页
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