写点什么

rust 开源任务调度软件 jiascheduler 全面介绍

作者:iwannay
  • 2025-05-12
    上海
  • 本文字数:2127 字

    阅读完需:约 7 分钟

rust开源任务调度软件jiascheduler全面介绍

jiascheduler 是一款 rust 编写的任务调度软件,支持自定义执行器,定时任务,常驻任务,可以一次把作业推送到数以万计的实例执行。同时 jiascheduler 还自带 webssh 管理,内网穿透,用户和权限管理,团队管理等功能。


本文作为一篇介绍文章逐一讲解 jiascheduler 的主要功能


作业仓库


我们可以把日常使用的脚本放置到作业仓库中,一个作业对应一个具体的脚本,如果需要执行某个作业我们只需要从仓库中选择对应的作业即可。作业根据打包方式的不同分为 单一批量 两种类型,根据调度方式的不同,分为单次执行,定时执行,守护执行。

作业

在作业的配置页面我们可以设置以下参数,如:


  • 作业名称,描述信息

  • 作业超时

  • 执行用户,执行目录

  • 作业使用的执行器(可以是 shell,python,mysql)

  • 大盘显示,开启此功能的作业执行汇总信息会显示在工作台大盘上

  • 上传文件,由于目前采用 ws 通道,仅支持小文件上传,大文件会卡住

  • 回调通知,开启此功能后作业执行完毕会触发回调通知



批量作业


我们也可以把多个脚本同时关联到同一个作业上,这种形式为批量作业,批量作业可以一次打包执行多个脚本,并最终生成一个统一的汇总执行结果。


定时器

有些作业是需要按照一定周期规则执行的,比如定时同步数据,我们可以把这种类型的作业关联到定时器上,然后只需要像启动作业那样启动定时器就行了,这样我们就得到了一个稳定触发的定时器。


定时器内部有自动恢复的机制,即使 Agent 因为某些原因自动重启了,定时器也不会中断执行。


常驻任务

supervisor 应该很多同学都有用过,被配置为常驻任务的作业会像受到 supervisor 守护那样停止了会被自动拉起来。


常驻任务提供了重启间隔参数,可以设置异常退出后下次被拉起来之前的等待时间。


常驻任务工作原理为检测脚本退出状态,如果脚本退出,则会被自动拉起。所以我们至少应该保证,被守护的任务是会阻塞执行的,如果守护的作业本身是一个后台任务,那么常驻任务将会判断脚本已经退出,会不停的重新拉起该任务。



运行状态

作业,定时器,常驻任务被启动之后,作业执行的实时状态和执行历史会被记录到运行状态中,而调度历史记录了启动作业,定时器,守护任务的操作历史。


运行列表

这里首先显示的是当前正在执行的作业,根据执行类型的不同,分为单次,定时,常驻。运行列表的显示单元为执行节点+作业,这表示同一个作业可以在不同的节点执行,同一个节点也可以执行不同的作业。


我们可以对每个执行单元执行停止和启动操作,这些操作是幂等且安全的,已经运行的作业或定时器再次点击启动会被自动忽略。


我们也可以删除某个执行单元,这会同步清理该单元对应的执行记录。


调度记录

我们每次在作业仓库启动一个作业/定时器/常驻任务,都会对应的生成一条调度记录,调度记录关联了启动时的作业版本,执行节点。我们可以基于调度记录重放之前的某一次作业启动操作,哪怕后续作业的版本改变了,也不会影响已经生成过的调度


我们可以基于调度记录重放历史操作,也能使用调度记录停止当前正在执行的调度,查看调度详情时会显示本次调度各节点作业的执行记录,删除调度时会同时清理对应的执行记录


执行记录

这里根据执行类型(单次,定时,常驻),记录了所有的执行历史,执行历史仅用于查看和审计,当然在确定不再使用这些数据时,我们可以直接删除


SSH 终端连接

我们可以远程连接到自己有权限访问的实例(需要管理员预先设置登录的账号密码),jiascheduler 自带的终端管理工具,包含了分屏,全屏,多页签,多会话广播操作等功能



团队

我们可以设置自己专属的团队,团队内的数据对团队内部成员都是共享的,团队管理员可以邀请用户加入自己创建的团队。


账号和权限

jiascheduler 提供了一个完整的权限管理系统,管理员可以创建新用户,设置权限,分配实例


用户

只有系统注册过的用户才可以登录 jiascheduler,程序初始化时会要求用户创建超级管理员。超级管理员可以在后台创建新的用户,并分配其实例,权限和角色。


实例

每一个部署过 Agent 的节点会自动注册为 jiascheduler 管理的实例,默认情况下该实例仅管理员可见,管理员可以给实例分组,并把该实例分配给不同的用户,角色。


如果需要 webssh 登录,管理员可以在实例的配置页面设置登录的账号密码。


权限

权限可以理解为是否允许做某件事,比如“允许管理实例”,“允许管理作业”等。jiascheduler 并不支持单独设置菜单权限,这些一开始系统已经默认好了,并不需要用户手动设置。


角色

目前一个用户只可以拥有一个角色,角色可以关联权限和实例(实例分组),具备了某个角色的用户便拥有了该角色下的权限和实例。


管理员可以创建角色,并给角色分配权限和实例



适用范围


由于一开始立项是为了满足运维使用场景,所以 jiascheduler 默认使用广播执行的模式,广播执行就是说,我们可以一次把一个作业广播给成千上万的实例执行,这非常适用于固定节点的执行方式,比如一个作业我们经常需要在特定的实例上执行。


在大量使用容器的分布式场景下,用户可能需要程序能够自动选择活跃的执行节点执行作业,这在当前是不满足的,jiasheduler 会在后续推出订阅执行模式,在同一个执行 topic 下保证至少有一个订阅节点执行。

后续计划


  1. 作业编排功能/workflow

  2. 分布式订阅执行模式

  3. golang/rust sdk

  4. 开放接口,可以把作业导出为开放接口直接供三方系统调用执行

  5. 更加强大的实例管理和 webssh 管理


用户头像

iwannay

关注

热爱生活,一路向光 2024-11-20 加入

安静,热烈,寻找,等待

评论

发布
暂无评论
rust开源任务调度软件jiascheduler全面介绍_rust_iwannay_InfoQ写作社区