jiascheduler 调度无限制,连通无界限,基于 rust 的自动化作业调度平台
前言
好多年前 iwannay 写了一款名为 jiacrontab 的任务调度软件,帮助到了一些同学;
开源有种魔力,总是激励着人走的更远,感谢每一位赞助过该项目的同学。
jiascheduler 是什么,服务于哪些人
如果你是一位程序开发者,你希望能够把手头杂乱的定时任务管理起来,能够随时启动和停止,最好还能看到执行日志;
如果你是网站管理员,你希望有一个统一的 web 控制台可以管理各大云厂商的服务器,而不需要频繁切换不同的云厂商控制台去操作;
如果你是一位运维管理者,你希望有一个平台能够统一管理海量的运维脚本,实时的把各类型功能脚本推送到数以万计的实例上,并收到执行反馈;
如果你是一个自由职业者,你刚好在腾讯云买了台服务器,你想通过某个工具给家里的电脑安排一个任务,比如....;
嗯...,除了这些...
我还有一些特殊场景,我想把几个无关的任务串联起来,最好还能做些逻辑判断,比如我想先检查下我的服务器实例是否安装了 nginx ,如果没安装我就安装,安装了我就部署一个网站。最好这个流程可以开放为一个接口,我调用接口就完成了!
如果你有以上需求,jiascheduler 将是一个不错的选择。何况 jiascheduler 还提供了一个企业级的,及其好用 webssh 终端。这个要划重点。
jiascheduler 架构
- agent 部署在需要被管理的节点上
- agent 和 comet 保持长连接,logic 层通过 comet 下达指令
- agent 和 comet 通信采用 tls 双向认证加密,安全有保证
jiascheduler 特性
请注意,部分功能会在后续版本实装
- 使用简单:提供前端 Web 界面,允许开发者可视化地完成调度任务的管理,任务运行状态监控和运行日志查看等功能
- 资源占用极低:基于 rust 开发,内存安全
- 跨区调度:支持内网打通,跨网络作业调度
- 定时策略:支持 CRON 表达式
- 批任务:支持批量执行作业,自定义输出校验,自动生成执行报表
- 执行模式:支持单机、订阅(订阅主要用于容器调度,会在后续版本逐步开放),广播
- 工作流支持:支持在线配置任务依赖关系( DAG ),以可视化的方式对任务进行编排,同时还支持上下游任务间的数据传递,以及多种节点类型(判断节点 & 嵌套工作流节点)。
- 执行器自由定制:默认集成 Shell 、Python ,用户可在后端自由定制
- 依赖精简:仅依赖 Mysql ,Redis
- 高可用 & 高性能:调度服务器经过精心设计,支持在极低的资源暂用下同时调度数万节点
- 故障转移与恢复:任务执行失败后,可根据配置的重试策略完成重试,在订阅模式下可跨节点调度
- 安装简单:程序仅有三个二进制文件组成,零依赖,开箱即用
- 企业级 webssh 终端:支持多页签,自定义主题,分屏,全屏,多会话批量命令,上传,下载
jiascheduler 功能集锦
作业
一个可以自动化执行的任务。
根据表现形式,可以是一个接口,一段 shell 脚本,一个可以执行的二进制命令
定时器
可以给作业添加执行计划,让作业按照预期的定时策略自动执行
作业编排
根据业务场景的不同,往往需要将多个 job 组合编排为一个新的 job 。作业编排即根据不同条件,串行,并行的组合不同 job 为一个可以新 job 过程。
批任务
一个作业可以同时关联多个子任务,子任务作为批任务的形式存在,可以对批任务的输出进行自定义表达式校验,这个功能可用于巡检
调度
在启动作业时,会选定关联的作业,和需要执行的节点,生成一份快照,这个操作被称为作业调度。我们可以根据调度记录,重新执行执行过的作业
运行状态管理
可以实时的管理正在运行的作业,比如停止定时器,kill 进程,重新启动作业
webssh 终端
操作便捷,功能强大,支持多页签,自定义主题,分屏,全屏,多会话批量命令,上传,下载
结语
以上为 jiascheduler 的简单介绍,请关注 https://github.com/jiawesoft/jiascheduler 获取最新发布动态
|