返回

分布式任务调度Hodor

分布式任务调度Hodor源码分析(整体结构)

分布式任务调度Hodor源码分析(整体结构)

简介

Hodor是一个高性能的分布式任务调度框架。

github地址(https://github.com/tincopper/hodor)

架构图

因无任何文档,以下架构图纯阅读源码个人理解后手工所画:

image-20210907231952228

代码目录及分析

  • 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下发任务执行命令

Built with Hugo
Theme Stack designed by Jimmy
本站访问量:   您是本站第 位访问者