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:


目录
相关文章
|
3月前
crash命令 —— task
crash命令 —— task
|
7月前
|
消息中间件 存储 机器人
Flink执行问题之执行checkpoint失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
启动(程序还没执行生成dump文件的代码)就崩溃的处理流程
启动(程序还没执行生成dump文件的代码)就崩溃的处理流程
|
7月前
|
消息中间件 存储 Kafka
kafka-python 执行两次初始化导致进程卡住
Python logging库重复初始化导致进程卡住, 原因竟是因为kafkaProducer初始化时存在未解开的锁导致的
|
存储 分布式计算 大数据
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
快速学习 Spark 原理_运行过程_stage 和 task 的关系
211 0
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
|
Java Android开发
JobService源码探究之 onStartJob()里执行耗时逻辑导致Job可能被强制销毁
JobService源码探究之 onStartJob()里执行耗时逻辑导致Job可能被强制销毁
|
缓存 分布式计算 Java
六十七、Spark-两种运行方式(本地运行,提交集群运行)
六十七、Spark-两种运行方式(本地运行,提交集群运行)
六十七、Spark-两种运行方式(本地运行,提交集群运行)
|
存储 算法 Unix
bthread源码剖析(四): 通过ParkingLot实现Worker间任务状态同步
通过之前的文章我们知道TaskGroup(以下简称TG)是在死循环等待任务,然后切换栈去执行任务。在当前TG没有任务的时候会进行“工作窃取”窃取其他TG的任务。在没有任务的时候TG会“休眠”,当任务出现的时候被唤醒然后消费。
327 0
|
流计算 Java 缓存
Flink运行时之TaskManager执行Task
TaskManager执行任务 当一个任务被JobManager部署到TaskManager之后,它将会被执行。本篇我们将分析任务的执行细节。 submitTask方法分析 一个任务实例被部署所产生的实际影响就是JobManager会将一个TaskDeploymentDescriptor对象封装在SubmitTask消息中发送给TaskManager。
1559 1
Giraph源码分析(四)—— Master 如何检查Worker启动成功
本文的目的 说明Giraph如何借助ZooKeeper来实现Master与Workers间的同步(不太确定)。 环境 在单机上(机器名:giraphx)启动了2个workers。 Giraph遵从单Master多Workers结构,BSPServiceMaster使用MasterThread线程来进行全局的同步。