# hicrocodile **Repository Path**: nice-maker/crocodile ## Basic Information - **Project Name**: hicrocodile - **Description**: 已 crocodile 为基础进行的二开,调整了些许逻辑和bug修复,添加了常驻任务功能 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-08-09 - **Last Updated**: 2024-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Crocodile 分布式任务调度系统 ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/labulaka521/crocodile/Build_release) [![Downloads](https://img.shields.io/github/downloads/labulaka521/crocodile/total.svg)](https://github.com/labulaka521/crocodile/releases) [![license](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000)](https://github.com/labulaka521/crocodile/blob/master/LICENSE) [![Release](https://img.shields.io/github/release/labulaka521/crocodile.svg?label=Release)](https://github.com/labulaka521/crocodile/releases) [English](./README.md) | 中文 ## 前言 ``` 本项目是在Crocodile的基础上做的二次开发 - 感谢作者无私贡献,做了些适合自己公司的调整,主要调整如下 1. 任务加载逻辑调整(原项目启动程序时会把定时任务都加载到redis,改动后时按需加载,只有启动状态的任务才会加载到redis), 2. 定时任务保存脚本时,换行符和回车符的过滤处理 3. 添加维护人标签,定时任务只要修改任务,修改者就会变成维护人,常驻任务直接点击接管即可,只有管理员和维护人才能删除任务 - 这个可以按照自己公司需要重新开发调整 4. 添加常驻任务功能 - 主要时为了解决php守护进程管理问题 - 借助client 几点supervisor rpc 管理,所以客户端节点需要安装 supervisor 并开启http并设置密码 5. 常驻任务功能目前有管理启停功能, 并没有日志查看功能, 由于调用的是supervisor rpc 包, 这个包也没有实现日志功能, 有需求的可以尝试直接使用go代理supervisor访问日志 # 后期改进 1. 常驻任务日志功能 2. 常驻任务审计功能 3. 权限体系优化 # 开发环境 node 16.20.2 go go.1.19.13 需要小于 1.20 版本,1.20 rand.seed 被弃用 ``` ## 原项目地址 - https://github.com/labulaka521/crocodile
点击查询二开差异 ![](./screenshot/task-v02.png) ![](./screenshot/supertask-v02.png)
## Introduction 基于Golang开发的分布式任务调度系统,支持http、golang、python、shell、python3、nodejs、bat等调度任务 ## Screenshot
点击我 ![](./screenshot/2.png) ![](./screenshot/8.png) ![](./screenshot/3.png) ![](./screenshot/4.png) ![](./screenshot/5.png) ![](./screenshot/6.png) ![](./screenshot/7.png) ![](./screenshot/1.png)
``` +----------+ +-------------+ ||--------|| ||-----------|| || || || || || Worker || || 调度中心 || || || || || RPC调用(gRPC) ||---------|| ||-----------|| +-----------------------> ||-------- || ||-----------|| || || || || <-----------------------+ || Worker || +---> || 调度中心 || 任务实时日志 || || 任 | || || ||--------|| 务 | ||-----------|| <------+ ||--------|| 完 | +------------+ | || || 成 | ^ | | || Worker || 持 | 实|任 | |数 || || 久 | 时|务 |获 |据 +----------+ 日 | 志|状 |取 |存 志 | 日|态 |锁 |储 | v v v | +-------+-+ +----+---+ | | | | | +----- | Redis | | MySQL | | | | | +---------+ +--------+ ``` ## Features - 多调度中心、多Worker运行 - 在Web节点对任务进行增加、修改、删除、克隆、运行任务、终止任务等操作 - 实时查看正在运行的任务、任务的实时日志和任务状态 - 多种任务类型: - 执行`http`请求任务 - 运行`shell`、`python`、`golang`、`python3`、`nodejs`代码(当然其他语言也可以支持,如需要请提出) - 父、子任务: 当设置了父任务或者子任务后,先会运行`父任务`->`主任务`->`子任务`,任意任务出错后会立即中断整个流程,还可以设置父任务或子任务`并行`或者`串行`运行 - 调度算法: 支持四种调度算法随机、轮训、Worker权重、Worker最少任务数来调用Worker运行任务, - 自定义报警策略: 可以设置当任务`成功`、`失败`、或者`运行完成后`报警给多个用户 设置任务的返回码或者返回内容来比较任务的实际返回码或者返回内容是否相同来判断任务运行成功或者,code任务默认为0,http任务默认为200 - 主机组: 一个任务只可以绑定到任意一个主机组,任务的运行会通过任务的路由策略来选取这个主机组中的一个任务来运行任务 - 主机: 一个主机组可以绑定多个主机,主机是实际运行任务的节点,注册后调度中心自动发现 - 安全策略 证书加密(可关闭) 密钥认证(必选,防止未授权Worker节点接入) - 任务的日志管理,清理日志 - 报警通知支持平台 - 邮件 - 企业微信 - 钉钉 - Slack Channel - Telegram Bot - WebHook URL - 详细的操作审计功能 - 权限控制 有三种用户类型 - 管理员 拥有所有操作权限, - 普通用户 可以创建新的任务、主机组,可以对自已创建的任务或主机组进行操作,不能查看审计记录、所有用户 - 访客 只有查看的权限、无任何操作修改权限,不能查看审计记录、所有用户 ## Supported platforms - Linux - Mac - Windows ## Start - 安装redis、mysql #### 构建 ``` git clone https://gitee.com/hulu20/crocodile.git cd crocodile go build -o crocodile -ldflags main.go -- 如果你本机安装了gf工具 gf build main.go -n crocodile -a amd64 -s linux -- 构建后,把二进制程序上传到服务器即可 ``` #### 修改配置 - 登入服务器 - 直接copy 源代码目录下core-temp.toml 进行按需修改即可, client 节点可以不需要配置[server]部分 ## Running - 如果需要开启调度节点之间的证书认证,请生成证书, 运行生成cert证书的命令 ```shell crocodile cert ``` 然后会在当前目录本地生成两个文件`cert.pem`、`key.pem`,将这两个文件保存后,将文件的路径填写值配置文件中,每个节点都需要这两个文件 - 作为一个调度中心来运行 可以启动多个调度中心,防止单点故障导致调度挂掉 ```shell ./crocodile server -c core.toml ``` - 作为一个Worker(主机)节点来运行 ```shell ./crocodile client -c core.toml ``` - 查看版本编译信息 ``` ./crocodile version ``` - [配置报警](https://github.com/labulaka521/crocodile/wiki/%E9%85%8D%E7%BD%AE%E6%8A%A5%E8%AD%A6%E9%80%9A%E7%9F%A5) ## Development - 前端 - 安装`yarn` - 进入web目录,先下载依赖`yarn`,然后单独运行前端`yarn run dev` - 打包至go,执行`make frontrnd`, - 后端 - 作为调度中心运行`make runs` - 作为Worker节点运行`make runc` > sql目录也是被打包在`go-bindata`中的,在安装时会从`go-bindata`生成的文件读取sql创建语句,如果修改了sql,就重新执行下`make bin-data` ## Doc [Wiki](https://github.com/labulaka521/crocodile/wiki/) ## License Crocodile is under the MIT license. See the [LICENSE](./LICENSE) file for details.