public abstract class TaskTracker extends Object
| 限定符和类型 | 类和说明 |
|---|---|
protected class |
TaskTracker.Dispatcher
定时扫描数据库中的task(出于内存占用量考虑,每次最多获取100个),并将需要执行的任务派发出去
|
protected static class |
TaskTracker.InstanceStatisticsHolder
存储任务实例产生的各个Task状态,用于分析任务实例执行情况
|
| 限定符和类型 | 字段和说明 |
|---|---|
protected long |
createTime |
protected AtomicBoolean |
finished |
protected long |
instanceId |
protected InstanceInfo |
instanceInfo |
protected ProcessorTrackerStatusHolder |
ptStatusHolder |
protected ScheduledExecutorService |
scheduledPool |
protected TaskPersistenceService |
taskPersistenceService |
| 限定符 | 构造器和说明 |
|---|---|
protected |
TaskTracker(ServerScheduleJobReq req) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
broadcast(boolean preExecuteSuccess,
long subInstanceId,
String preTaskId,
String result)
生成广播任务
|
static TaskTracker |
create(ServerScheduleJobReq req)
静态方法创建 TaskTracker
|
void |
destroy()
销毁自身,释放资源
|
protected void |
dispatchTask(TaskDO task,
String processorTrackerAddress)
派发任务到 ProcessorTracker
|
abstract InstanceDetail |
fetchRunningStatus()
查询任务实例的详细运行状态
|
protected TaskTracker.InstanceStatisticsHolder |
getInstanceStatisticsHolder(long subInstanceId)
获取任务实例产生的各个Task状态,用于分析任务实例执行情况
|
protected abstract void |
initTaskTracker(ServerScheduleJobReq req)
初始化 TaskTracker
|
void |
receiveProcessorTrackerHeartbeat(ProcessorTrackerStatusReportReq heartbeatReq)
处理 ProcessorTracker 的心跳信息
|
boolean |
submitTask(List<TaskDO> newTaskList)
提交Task任务(MapReduce的Map,Broadcast的广播),上层保证 batchSize,同时插入过多数据可能导致失败
|
void |
updateTaskStatus(String taskId,
int newStatus,
long reportTime,
String result)
更新Task状态
V1.0.0 -> V1.0.1(e405e283ad7f97b0b4e5d369c7de884c0caf9192) 锁方案变更,从 synchronized (taskId.intern()) 修改为分段锁,能大大减少内存占用,损失的只有理论并发度而已
|
protected long createTime
protected long instanceId
protected InstanceInfo instanceInfo
protected ProcessorTrackerStatusHolder ptStatusHolder
protected TaskPersistenceService taskPersistenceService
protected ScheduledExecutorService scheduledPool
protected AtomicBoolean finished
protected TaskTracker(ServerScheduleJobReq req)
public static TaskTracker create(ServerScheduleJobReq req)
req - 服务端调度任务请求public void updateTaskStatus(String taskId, int newStatus, long reportTime, @Nullable String result)
taskId - task的ID(task为任务实例的执行单位)newStatus - task的新状态reportTime - 上报时间result - task的执行结果,未执行完成时为空public boolean submitTask(List<TaskDO> newTaskList)
newTaskList - 新增的子任务列表public void receiveProcessorTrackerHeartbeat(ProcessorTrackerStatusReportReq heartbeatReq)
heartbeatReq - ProcessorTracker(任务的执行管理器)发来的心跳包,包含了其当前状态public void broadcast(boolean preExecuteSuccess,
long subInstanceId,
String preTaskId,
String result)
preExecuteSuccess - 预执行广播任务运行状态subInstanceId - 子实例IDpreTaskId - 预执行广播任务的taskIdresult - 预执行广播任务的结果public void destroy()
protected void dispatchTask(TaskDO task, String processorTrackerAddress)
task - 需要被执行的任务processorTrackerAddress - ProcessorTracker的地址(IP:Port)protected TaskTracker.InstanceStatisticsHolder getInstanceStatisticsHolder(long subInstanceId)
subInstanceId - 子任务实例IDprotected abstract void initTaskTracker(ServerScheduleJobReq req)
req - 服务器调度任务实例运行请求public abstract InstanceDetail fetchRunningStatus()
Copyright © 2020. All rights reserved.