# goflow
用python实现的高可用可横向扩展的分布式调度系统,并具有可视化操作的功能
# 包含功能
- 定时调度(类似linux crontab)
- 依赖调度(满足依赖关系后才会启动任务)
- 任务格式: 任意命令行可执行程序
- 高可用,可横向扩展(调度器和执行器均可同时运行多个,完善的重试机制)
- 可视化操作(基于flask)
# 系统完整流程
> 调度器获取任务,通过Redis进行任务分发,执行器消费Redis的任务并执行
![scheduler.png](docs/scheduler.png)
# web页面处理调度任务
## 主界面
![web_scheduler.PNG](docs/web_scheduler.PNG)
## 任务执行情况及任务操作
![TaskRunEdit.PNG](docs/TaskRunEdit.PNG)
任务操作:
- 删除
- 强制执行
- 重做当前
- 重做当前及后续
- 强制通过
## 任务执行日志输出
![TaskRunLog.PNG](docs/TaskRunLog.PNG)
### TODO
- 查看单个任务依赖关系
- 优化任务触发方式
- 修复未知bug
- 用户权限
- 任务路由
- 任务优先级
- work发现
# 使用方法:
> goflow命令位于工程目录下
- 安装mysql和etcd,执行 goflow init_db -c goflow_conf.json
- 运行调度器: goflow scheduler -c goflow_conf.json --ha
- 运行执行器(可启多个): goflow executer -c goflow_conf.json
# 配置文件介绍
> 配置文件为json格式
```
{
"Common":{
"MysqlConn":"mysql://test:test@localhost:3306/goflow", # 数据库地址
"MysqlConn":"mysql://test:test@localhost:3306/cflow", # 数据库地址
"Broker":"localhost:9092" # kafka地址 也可基于redis
},
"Scheduler":{
"LogDir":"/var/log/go_log", # 日志路径
"LogFile":"scheduler.log", # 日志文件
"FetchInterval":10, # 扫描cron_conf间隔(秒)
"WorkerTimeOut":20, # woker 心跳超时时间
"RetryQueueimes":4 # 超时任务,重新发起调度的次数
},
"Worker": {
"LogDir":"/var/log/go_log",
"LogFile":"executer.log",
"Parallelism": 32, # 每个woker,并行执行任务的个数
"HearteatInterval": 10, # worker 心跳间隔(秒)
"Retry": 3, # 单个任务重试次数
"TaskTimeOut": 60 # 执行单个任务时的超时时间(秒), -1 不设置超时
}
}
```
# 库表介绍(database: goflow)
- cron_conf crontab 配置表,存储定时任务配置
- loader_result 抽取结果表,存抽取结果,以及worker直接文件同步
- stat_result 每天的执行结果
- task_define 普通任务定义
- task_dependency 任务依赖关系
- task_instance 所有的任务实例, 记录任务的运行状态信息等
# 常用命令介绍(goflow)
## 子命令列表 goflow -h:
```
{run,dep,do_all_job,migrate,version,kill,executer,scheduler,init_db} ...
```
## 重跑命令(goflow run)
### goflow run -h
```
查看参数列表和使用方法
```
## 数据初始化(init_db -c )
### goflow init_db -c goflow_conf.json
```
查看参数列表和使用方法
```
### 重跑单个任务(需满足依赖关系)
```
goflow run -j task_id -d YYYY-MM-DD
```
### 重跑单个任务(无需满足依赖)
```
goflow run -j task_id -d YYYY-MM-DD --force
```
### 重跑任务以及其后置任务
```
goflow run -j task_id -d YYYY-MM-DD -down
```
### 重跑任务以及其前置任务
```
goflow run -j task_id -d YYYY-MM-DD -up
```
### www页面处理调度任务
任务操作:
开始
强制执行
重做当前
重做当前及后续
强制通过
### TODO
1、查看依赖
2、优化任务触发方式
3、修复未知bug
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【作品名称】:用python实现的高可用可横向扩展的分布式调度系统,并具有可视化操作的功能 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 用python实现的高可用可横向扩展的分布式调度系统,并具有可视化操作的功能 # 包含功能 - 定时调度(类似linux crontab) - 依赖调度(满足依赖关系后才会启动任务) - 任务格式: 任意命令行可执行程序 - 高可用,可横向扩展(调度器和执行器均可同时运行多个,完善的重试机制) - 可视化操作(基于flask)
资源推荐
资源详情
资源评论
收起资源包目录
用python实现的高可用可横向扩展的分布式调度系统,并具有可视化操作的功能 (192个子文件)
bootstrap.css 143KB
bootstrap.min.css 118KB
font-awesome.css 34KB
font-awesome.min.css 28KB
bootstrap-social.css 20KB
dataTables.jqueryui.css 16KB
jquery.dataTables.css 15KB
jquery.dataTables_themeroller.css 14KB
dataTables.jqueryui.min.css 14KB
jquery.dataTables.min.css 13KB
sb-admin-2.css 8KB
dataTables.bootstrap.css 7KB
sb-admin-2.min.css 7KB
dataTables.bootstrap4.css 5KB
dataTables.bootstrap.css 5KB
dataTables.bootstrap4.min.css 5KB
dataTables.bootstrap.min.css 4KB
dataTables.uikit.css 4KB
dataTables.uikit.min.css 3KB
dataTables.responsive.css 3KB
dataTables.semanticui.css 3KB
dataTables.foundation.css 3KB
dataTables.semanticui.min.css 3KB
dataTables.material.css 3KB
dataTables.foundation.min.css 3KB
dataTables.material.min.css 2KB
demo.css 1KB
metisMenu.css 1KB
metisMenu.min.css 781B
morris.css 433B
.DS_Store 6KB
.DS_Store 6KB
fontawesome-webfont.eot 75KB
glyphicons-halflings-regular.eot 20KB
.gitignore 25B
index.html 15KB
index.html 10KB
mybase.html 7KB
demo2.html 5KB
mylayout.html 3KB
login.html 1KB
task_log.html 654B
index.html 134B
favicon.ico 894B
dagre-d3.js 1.35MB
dagre-d3.js 1.35MB
jquery.dataTables.js 437KB
raphael.js 305KB
jquery.js 260KB
jquery.js 258KB
d3.min.js 217KB
d3.min.js 217KB
jquery.flot.js 120KB
jquery.js 95KB
jquery-1.10.2.min.js 91KB
raphael.min.js 90KB
jquery.min.js 84KB
jquery.dataTables.min.js 81KB
bootstrap.js 68KB
morris.js 64KB
excanvas.js 41KB
bootstrap.min.js 36KB
morris.min.js 35KB
dataTables.responsive.js 25KB
jquery.flot.pie.js 23KB
jquery.flot.tooltip.js 23KB
jquery.flot.tooltip.source.js 23KB
excanvas.min.js 19KB
jquery.flot.navigate.js 14KB
jquery.flot.selection.js 13KB
jquery.flot.errorbars.js 12KB
jquery.flot.time.js 11KB
jquery.flot.canvas.js 9KB
jquery.flot.tooltip.min.js 9KB
jquery.flot.image.js 7KB
jquery.flot.stack.js 7KB
jquery.colorhelpers.js 6KB
jquery.flot.categories.js 6KB
jquery.flot.crosshair.js 5KB
jquery.flot.fillbetween.js 5KB
dataTables.semanticui.js 5KB
dataTables.material.js 5KB
dataTables.uikit.js 5KB
dataTables.bootstrap4.js 5KB
dataTables.bootstrap.js 4KB
jquery.timers-1.2.js 4KB
dataTables.jqueryui.js 4KB
jquery.flot.threshold.js 4KB
dataTables.foundation.js 4KB
dataTables.bootstrap.js 4KB
metisMenu.js 4KB
jquery.flot.resize.js 3KB
diag.js 3KB
diag.js 3KB
dataTables.jqueryui.min.js 3KB
jquery.flot.symbol.js 2KB
dataTables.uikit.min.js 2KB
dataTables.semanticui.min.js 2KB
dataTables.material.min.js 2KB
dataTables.foundation.min.js 2KB
共 192 条
- 1
- 2
资源评论
MarcoPage
- 粉丝: 3085
- 资源: 3461
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功