public abstract class HeavyTaskTracker extends TaskTracker
| 限定符和类型 | 类和说明 |
|---|---|
protected class |
HeavyTaskTracker.Dispatcher
定时扫描数据库中的task(出于内存占用量考虑,每次最多获取100个),并将需要执行的任务派发出去
|
protected static class |
HeavyTaskTracker.InstanceStatisticsHolder
存储任务实例产生的各个Task状态,用于分析任务实例执行情况
|
protected static class |
HeavyTaskTracker.TaskBriefInfo |
protected class |
HeavyTaskTracker.WorkerDetector
执行器动态上线(for 秒级任务和 MR 任务)
原则:server 查询得到的 执行器状态不会干预 worker 自己维护的状态,即只做新增,不做任何修改
|
| 限定符和类型 | 字段和说明 |
|---|---|
protected ProcessorTrackerStatusHolder |
ptStatusHolder
ProcessTracker 状态管理
|
protected ScheduledExecutorService |
scheduledPool
定时任务线程池
|
protected TaskPersistenceService |
taskPersistenceService
数据库持久化服务
|
advancedRuntimeConfig, appendedWfContext, createTime, executeType, finished, instanceId, instanceInfo, MAX_REPORT_FAILED_THRESHOLD, reportFailedCnt, workerRuntime| 限定符 | 构造器和说明 |
|---|---|
protected |
HeavyTaskTracker(ServerScheduleJobReq req,
WorkerRuntime workerRuntime) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
broadcast(boolean preExecuteSuccess,
long subInstanceId,
String preTaskId,
String result)
生成广播任务
|
static HeavyTaskTracker |
create(ServerScheduleJobReq req,
WorkerRuntime workerRuntime)
静态方法创建 TaskTracker
|
void |
destroy()
销毁自身,释放资源
|
protected void |
dispatchTask(TaskDO task,
String processorTrackerAddress)
派发任务到 ProcessorTracker
|
protected HeavyTaskTracker.InstanceStatisticsHolder |
getInstanceStatisticsHolder(long subInstanceId)
获取任务实例产生的各个Task状态,用于分析任务实例执行情况
|
protected TaskPersistenceService |
initTaskPersistenceService(InstanceInfo instanceInfo,
WorkerRuntime workerRuntime) |
protected abstract void |
initTaskTracker(ServerScheduleJobReq req)
初始化 TaskTracker
|
void |
receiveProcessorTrackerHeartbeat(ProcessorTrackerStatusReportReq heartbeatReq)
处理 ProcessorTracker 的心跳信息
|
void |
stopTask()
停止任务
|
boolean |
submitTask(List<TaskDO> newTaskList)
提交Task任务(MapReduce的Map,Broadcast的广播),上层保证 batchSize,同时插入过多数据可能导致失败
|
void |
updateAppendedWfContext(Map<String,String> newAppendedWfContext)
更新追加的上下文数据
|
void |
updateTaskStatus(Long subInstanceId,
String taskId,
int newStatus,
long reportTime,
String result)
更新Task状态
V1.0.0 -> V1.0.1(e405e283ad7f97b0b4e5d369c7de884c0caf9192) 锁方案变更,从 synchronized (taskId.intern()) 修改为分段锁,能大大减少内存占用,损失的只有理论并发度而已
|
fetchRunningStatus, reportCreateErrorToServer, reportFinalStatusThenDestroyprotected final ProcessorTrackerStatusHolder ptStatusHolder
protected final TaskPersistenceService taskPersistenceService
protected ScheduledExecutorService scheduledPool
protected HeavyTaskTracker(ServerScheduleJobReq req, WorkerRuntime workerRuntime)
protected TaskPersistenceService initTaskPersistenceService(InstanceInfo instanceInfo, WorkerRuntime workerRuntime)
public static HeavyTaskTracker create(ServerScheduleJobReq req, WorkerRuntime workerRuntime)
req - 服务端调度任务请求public void updateAppendedWfContext(Map<String,String> newAppendedWfContext)
newAppendedWfContext - 追加的上下文数据public void updateTaskStatus(Long subInstanceId, String taskId, int newStatus, long reportTime, @Nullable String result)
subInstanceId - 子任务实例IDtaskId - 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()
destroy 在类中 TaskTrackerpublic void stopTask()
TaskTrackerstopTask 在类中 TaskTrackerprotected void dispatchTask(TaskDO task, String processorTrackerAddress)
task - 需要被执行的任务processorTrackerAddress - ProcessorTracker的地址(IP:Port)protected HeavyTaskTracker.InstanceStatisticsHolder getInstanceStatisticsHolder(long subInstanceId)
subInstanceId - 子任务实例IDprotected abstract void initTaskTracker(ServerScheduleJobReq req)
req - 服务器调度任务实例运行请求Copyright © 2024. All rights reserved.