首页 > 其他 > 详细

xxl-job设计思想

时间:2021-08-13 17:18:27      阅读:16      评论:0      收藏:0      [点我收藏+]
一、简介
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
二、源码
地址:
结构
xxl-job-admin:调度中心 xxl-job-core:公共依赖 xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器) :xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式; :xxl-job-executor-sample-frameless:无框架版本;
三、Springboot如何整合xxl-job
  1. 初始化调度数据库
//源码地址: /xxl-job/doc/db/tables_xxl_job.sql
  1. Maven依赖
  2. 配置文件信息:端口,地址,数据库连接,线程池,国际化,token认证,报警邮件服务端等等
  3. 配置XxlJobConfig:注解方式或者继承类方式
  4. 创建Handler接口:具体任务的业务逻辑
四、xxl-job架构思想
  1. 将调度行为抽象为调度中心公共平台,而平台本身不承担业务逻辑,调度中心负责发送调度请求。
  2. 将任务抽象成分散的JobHandler,交由执行器统一管理,执行器负责接收调度请求,并且执行对应的业务逻辑,调度和任务完全解耦。
  3. 调度和任务完全解耦,提高了系统稳定性和扩展性。
  4. 其中调度中心支持可视化的动态管理调度信息,包括任务和执行器的curd,GLUC开发,报警信息配置,调度机制:轮询,第一个,最后一个,随机性,一致性Hash等算法等,所有操作实时生效,同事支持调度中心日志查看和操作,执行器的状态和日志查看。
5.架构图
技术分享图片
五、总结
常用的定时任务以及分布式框架实现:
  1. while (true) + 线程休眠
通过轮询+线程休眠实现定时任务。
  1. java.util.Timer + java.util.TimerTask
  2. ScheduleExecutorService
jdk1.5作为并发工具被引入,是最理想的定时任务实现方案
  1. Quartz
  2. SpringTask
  3. SpringBoot注解+@EnableScheduling+@Schedule
  4. xxl-job分布式调度中心
 
以上实现方式一些区别,对比:
xxl-job官网描述quartz不足之处:
  • 问题一:调用API的的方式操作任务,不人性化;
  • 问题二:需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重。
  • 问题三:调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况下,此时调度系统的性能将大大受限于业务;
  • 问题四:quartz底层以“抢占式”获取DB锁并由抢占成功节点负责运行任务,会导致节点负载悬殊非常大;而XXL-JOB通过执行器实现“协同分配式”运行任务,充分发挥集群优势,负载各节点均衡。
XXL-JOB弥补了quartz的上述不足之处。
 

xxl-job设计思想

原文:https://www.cnblogs.com/anynw/p/15137032.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!