一、Hera调度系统基本数据结构(Event、Listener、Dispatcher)

简单介绍

参照文章 zeus源码剖析之事件处理机制
了解Hera也是使用着 观察者模式 进行对事件处理。
其中老鹰是 Event事件,母鸡是 不同任务类型的Listener, 小鸡是 Dispatcher.jobHandlers
简单说,母鸡和小鸡会跟着老鹰不同的动作,作出不同的相应

一、Event事件


有Job的失败事件、漏跑事件、成功事件,更新事件等

二、不同任务类型的Listener

在这里插入图片描述

HearAddJobListener
  • 处理HeraJobMaintenanceEvent事件,往Dispatcher的 JobHandle集合里添加对应的jobHandle,并处理初始化事件
HeraJobFailListener
  • 处理HeraJobFailedEvent事件,调用任务失败告警接口

三、Dispatcher.jobHandlers

主要函数是 handleEvent (处理执行成功事件、定时调度事件、更新任务事件、丢失重跑事件、初始化事件)

  1. 处理初始化事件 handleInitialEvent
    1. 先判断是否是之前正在运行的状态(重启时,可能是之前正在运行,但是关闭调度系统造成还没跑完)
    2. 如果是定时调度任务的话,创建quartz调度,在时间到的时候 添加进调度队列
  2. 处理执行成功事件 handleSuccessEvent
    1. 如果该执行成功的任务是本任务的依赖任务,更新本任务的状态(将本任务的对应依赖任务 更新成 已执行状态)
    2. 判断本任务的依赖任务 是否全执行成功
    3. 如果全执行成功,将本任务添加进调度队列
  3. 处理定时调度事件 handleTriggerEvent
  4. 处理更新任务事件 handleMaintenanceEvent
    1. 如果定时调度任务有更新操作,需要重新创建quartz调度
  5. 处理漏跑任务事件 handleLostEvent

查看下篇:二、Hera调度系统初始化、生成和清理版本

发布了53 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xw514124202/article/details/96781948