CacheCloud中Task任务执行过程

简介: CacheCloud中Task任务执行过程实质是先将task进行堆积到taskQueue中,然后进行统一多线程进行处理。

一、定时任务的生成执行过程

CacheCloud定时任务执行的过程,以taskServie为例:

首先指定需要执行的任务,也即task,然后才能执行定时任务。因此在CacheCloud中,可以看到定时任务的添加是在TaskService中的,可以看到有许多带add前缀的task任务。可以看到定时任务需要先提交到taskQueue中,然后经过taskService触发excuteNewTask,执行任务,此时会先查询还没执行的定时任务列表,找到未执行的定时任务,然后获取具体定时任务的执行步骤getTaskSteps,拿到之后,会拿到需要执行的若干步骤,就可以执行了。执行完成后,会更新taskQueue表中定时任务的状态。


二、定时任务的来源

比如部署应用的时候就会有addTask这个动作和提交检测

比如检测此时就会添加如下定时任务到taskQueue中等待taskService执行executeNewTask:

addAppScanKeyTask
addAppBigKeyTask
addAppIdleKeyTask
addAppHotKeyTask
addAppDelKeyTask
addAppScanCleanTask

以addAppBigKeyTask为例,com.sohu.cache.web.controller.AppToolController#submitDiagnostic可以看到需要经过:

更新审批信息
生成并保存taskqueue
更新task信息


三、TaskJob执行的过程

通过上下文拿到定时任务TaskService,执行taskService.executeNewTask()
获取任务队列列表是task是new状态的列表
循环任务队列,获取具体的task,更新task状态为准备执行READY
执行任务提交,然后拿到具体的task执行 future
获取具体的队列task,进行判断空和状态
更新队列task为正在执行RUNNING
获取任务步骤getTaskSteps
将相关task变成taskflow
设置task步骤信息放入到数据库 准备 TaskStepFlow    
遍历taskStepFlow
更新TaskQueue状态

taskStep的过程以AppDelKeyTask为例:

检查集群参数
创建delete key
等到delete key完成
工单审批

相关流程可以详见xmind:


目录
相关文章
|
存储 Java
2021年了,生产环境的问题你怎么解决呢?快学习下线程Dump分析(上)
2021年了,生产环境的问题你怎么解决呢?快学习下线程Dump分析
368 0
2021年了,生产环境的问题你怎么解决呢?快学习下线程Dump分析(上)
|
5天前
|
Cloud Native Java 调度
项目环境测试问题之线程同步器会造成执行完任务的worker等待的情况如何解决
项目环境测试问题之线程同步器会造成执行完任务的worker等待的情况如何解决
|
3月前
|
消息中间件 存储 机器人
Flink执行问题之执行checkpoint失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
数据采集 缓存 监控
【Hystrix技术指南】(5)Command创建和执行实现
【Hystrix技术指南】(5)Command创建和执行实现
185 0
【Hystrix技术指南】(5)Command创建和执行实现
|
Java Android开发
JobService源码探究之 onStartJob()里执行耗时逻辑导致Job可能被强制销毁
JobService源码探究之 onStartJob()里执行耗时逻辑导致Job可能被强制销毁
JUC(二)JAVA线程池开启,等待全部执行完毕,配合计数器使用,List并发异常解决
JUC(二)JAVA线程池开启,等待全部执行完毕,配合计数器使用,List并发异常解决
JUC(二)JAVA线程池开启,等待全部执行完毕,配合计数器使用,List并发异常解决
|
SQL 分布式计算 Java
spark task过多导致任务运行过慢甚至超时
spark task过多导致任务运行过慢甚至超时
790 0
spark task过多导致任务运行过慢甚至超时
|
存储 安全 IDE
2021年了,生产环境的问题你怎么解决呢?快学习下线程Dump分析(下)
2021年了,生产环境的问题你怎么解决呢?快学习下线程Dump分析
306 0
2021年了,生产环境的问题你怎么解决呢?快学习下线程Dump分析(下)
|
存储 算法 Unix
bthread源码剖析(四): 通过ParkingLot实现Worker间任务状态同步
通过之前的文章我们知道TaskGroup(以下简称TG)是在死循环等待任务,然后切换栈去执行任务。在当前TG没有任务的时候会进行“工作窃取”窃取其他TG的任务。在没有任务的时候TG会“休眠”,当任务出现的时候被唤醒然后消费。
298 0
|
Java
【Java 并发编程】线程池机制 ( 线程池状态分析 | 线程池状态转换 | RUNNING | SHUTDOWN | STOP | TIDYING | TERMINATED )
【Java 并发编程】线程池机制 ( 线程池状态分析 | 线程池状态转换 | RUNNING | SHUTDOWN | STOP | TIDYING | TERMINATED )
127 0
【Java 并发编程】线程池机制 ( 线程池状态分析 | 线程池状态转换 | RUNNING | SHUTDOWN | STOP | TIDYING | TERMINATED )