分布式任务调度Hodor源码分析(整体结构)
简介
Hodor是一个高性能的分布式任务调度框架。
github地址(https://github.com/tincopper/hodor)
架构图
因无任何文档,以下架构图纯阅读源码个人理解后手工所画:
代码目录及分析
hodor-admin
待开发:配合前端页面做任务展示
hodor-client
客户端,用户app通过该客户端将任务信息提交到hodor-server,供其调度
集成了nettyserver服务,接收来自hodor-server的任务执行请求
hodor-client-demo
用户app示例:集成了hodor-client
hodor-common
通用库
- 环形队列
- 观察者模式(事件发布监听)模型
- Excutor:多线程封装
- Extension: SPI扩展方式封装
- 负载均衡
- 存储:本地缓存/mysql/h2
- 异常
- 日志
- Distributor高性能队列
hodor-core
简单的spring mybatis 工程:对任务/任务执行记录等数据入库(mysql)
hodor-extension
hodor-model
实体
hodor-register
注册中心封装,目前只实现了zookeeper
- hodor-register-api
- Hodor-register-zookeeper
hodor-remoting
netty http客户端
netty http服务端
hodor-scheduler
任务定时的封装
目前只实现了quartz
quartz当到达
- hodor-scheduler-api
- hodor-scheduler-quartz
hodor-server
1,hodor-server集成了注册中心客户端,监听server服务的变更;
2, hodor-server注册到注册中心,并选举一个leader
3, hodor-server通过集成hodor-remoting的nettyserver接收hodor-client发送过来的注册定时任务的命令
4, hodor-server通过注册的server服务,合理分配任务
5,记录任务到db,并记录日志,再向hodor-scheduler-quartz注册任务
6,hodor-scheduler-quartz当某个任务到达执行时刻,触发 hodor-server的任务执行器去下发任务
7, hodor-server通过集成hodor-remoting的nettyclient向hodor-client下发任务执行命令