XXL-Job
2024-04-21 17:32:25 5 举报
XXL-Job是一款开源的分布式任务调度系统,主要用于解决大型企业中的定时任务处理,任务调度和任务管理问题。它具备高效的调度能力,支持丰富的任务类型,包括单机任务、集群任务和定时任务等,能够满足企业对于任务调度的不同需求。此外,XXL-Job还提供了任务分片,负载均衡,高可用等功能,使得任务调度更加高效和稳定。它支持多种语言,包括Java、Python、Go等,易于与各类企业应用进行集成。XXL-Job具有友好的用户界面,提供了详细的日志和监控信息,方便开发人员和管理人员对任务进行监控和管理。
作者其他创作
大纲/内容
jobHandlerRepository放入到一个Map中
select * from xxl_job_lock where lock_name = 'schedule_lock' for update
TriggerCallbackThread#pushCallBack把任务执行情况放入到队列中会被发生到服务端
ThreadPoolExecutor#execute接收到服务器的请求
如果是分片广播则计算一下循环调用
.ExecutorBizImpl#run
否
XxlJobExecutor#registJobHandler
ExecutorRouter#route通过配置的路由规则进行执行器路由分片广播不需要路由
JobTriggerPoolHelper#trigger触发客户端执行任务
JobTriggerPoolHelper#trigger
JobThread#pushTriggerQueue把要执行的任务放入队列中
JobScheduleHelper定时任务核心
XxlJobFileAppender#initLogPath初始化日志地址
ExecutorBizClient#run调用执行器的Url
校验名称不能为空串名称不能重复
是
MethodJobHandler#destroy
JobTriggerPoolHelper#start启动触发任务的线程池
EmbedServer#startRegistry每 30s 一次向服务端注册
通过 sql 锁住操作
JobCompleteHelper#start启动任务丢失检测线程
MethodJobHandler#execute反射执行任务
MethodIntrospector#selectMethods找到所有带有 @XxlJob 的方法
记录日志
JobScheduleHelper#refreshNextValidTime通过表达式计算下次执行时间
JobThread#run
ringThread时间轮线程
XxlJobExecutor#initAdminBizList初始化服务端访问
XxlJobScheduler#init
EmbedServer#start开启 netty 服务
添加一个log记录
EmbedHttpServerHandlerbizThreadPool 最大线程是 200容量是 2000
TriggerCallbackThread#start启动回调服务端的线程负责通知服务端执行情况
JobScheduleHelper#pushTimeRing
IdleStateHandler负责心跳HttpServerCodecHttpObjectAggregator负责处理 http 请求EmbedHttpServerHandler业务处理
JobScheduleHelper#pushTimeRing放入时间轮
根据类型进行任务数据校验
XxlJobExecutor#start
客户端停机
XxlJobSpringExecutor#initJobHandlerMethodRepository
JobTriggerPoolHelper#addTrigger添加触发任务
任务是否在 5s内执行
从队列中取数据
如果在1分钟内有10次执行时间大于 500ms者使用慢的线程池
XxlJobSpringExecutor客户端注入Spring
死循环
XxlJobSpringExecutor#afterSingletonsInstantiated所有非延迟加载的单利Bean都加载完成
服务端启动
选择执行线程池
一次查询出所有在 5s 内会执行的任务
EmbedHttpServerHandler#process就是直接调用 ExecutorBizImpl 里面的方法
客户端
执行任务
如果配置了过期立即执行者会调度一次
XxlJobTrigger#trigger
XxlJobExecutor#registJobThread第一次调用会创建,一个任务创建一个
找到init,destory方法
JobScheduleHelper#start启动调度任务的线程
XxlJobTrigger#processTrigger
JobFailMonitorHelper#start启动失败任务报警线程
JobRegistryHelper#start启动注册信息处理的线程
MethodJobHandler#init调用 init 方法
下次执行在 5s 内
获取当前时间槽的任务
JobLogFileCleanThread#start启动日志清理线程
任务是否过期 5s 了
0 条评论
下一页