V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
heqingpan
V2EX  ›  程序员

rust 重写 xxl-job 的项目 ratch-job v0.1.5 版本发布,控制台支持鉴权与数据权限管控。

  •  1
     
  •   heqingpan · 2025 年 4 月 21 日 · 3183 次点击
    这是一个创建于 272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    v0.1.5 版本更新内容

    • 新增:增加缓存功能以支持用户鉴权信息缓存;
    • 新增:控制台增加用户管理功能模块;支持用户基本数据管理,支持功能权限、应用数据权限管理;
    • 新增:控制台开启登陆鉴权;
    • 新增:控制台支持功能权限;管理员:拥有所有功能权限,开发者拥有除了用户管理外的功能权限;访客只拥有查询权限;
    • 新增:控制台支持数据权限;用户只能查询到其有权限的应用、任务数据;用户只能操作其有权限的应用、任务数据。
    • 优化:控制台应用(执行器)支持实例注册类型设置为手动录入,可手动指定执行器列表。
    • 修复:修复应用模块 raft snapshot 时指定表名不正确的问题。

    项目地址: ratch-job

    项目计划

    1. 完成一个包含核心内容,满足大部分用户使用场景的初始正式版本;
    2. 追平 xxl-job admin 现有的功能;
      1. 支持任务管理
      2. 支持按任务执行计划和指定的触发策略调度任务
      3. 支持查看任务执行记录
      4. 支持查看执行器对应的任务执行日志
      5. 控制台支持用户管理、登陆验证与权限控制
    3. 完全兼容 xxl-job 协议前提下增强调度平台功能
      1. 任务失败重试支持配置对应的超时失败、重试次数与重试间隔;( xxl-job 不支持配置重试间隔)
      2. 控制台触发支持指定执行器进行触发;
      3. 调度类型计划支持固定延时调度:上一个任务完成后延时固定秒数后新触发一次任务;
      4. 任务调度失败,通过内置消息监听中心支持配置多种渠道通知;
      5. 支持任务导入、导出
      6. 支持应用数据备份、恢复
      7. 支持 open api 管理 ratch-job 的任务调度;目前核心接口已完成,待增加认证机制与对应的文档;
      8. 支持 DAG 调度
    4. 需要增强协议后增加功能 (需要等上面的内容稳定后才会开始)
      1. 支持自定义分片任务;(目前 xxl-job 只有全量分片任务)
      2. 移除任务平台主动对执行器服务发起请求的网络路由强依赖,需要使用类似 grpc 这类的长链接协议;

    性能

    环境 任务数 任务调度 tps cpu 使用率(单核占比) 内存(M)
    docker 100 100 5.2% 20M
    ubuntu 1000 1000 32% 80M
    mac m1 2000 2000 18% 90M
    ubuntu 5000 5000 107% 270M
    ubuntu 10000 10000 220% 810M
    24 条回复    2025-05-04 10:16:00 +08:00
    putaozhenhaochi
        1
    putaozhenhaochi  
       2025 年 4 月 21 日 via iPhone
    🐮
    1103409364
        2
    1103409364  
       2025 年 4 月 21 日
    🐂
    5261
        3
    5261  
       2025 年 4 月 21 日
    需要 rust 新手协助不 哈哈
    Gilfoyle26
        4
    Gilfoyle26  
       2025 年 4 月 21 日
    一些建议:
    1.README 内容好好捯饬捯饬
    2.git commit 尽量使用英文
    capric
        5
    capric  
       2025 年 4 月 21 日
    任务和规则持久化用的是什么
    capric
        6
    capric  
       2025 年 4 月 21 日
    @capric async-raft-ext 日志复制吗?
    heqingpan
        7
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @5261 欢迎协助😊

    可以认领 issue 功能需求,如果自己有什么想优化的点也可以自己提 issue 再实现提 pr 。
    heqingpan
        8
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @Gilfoyle26
    感谢建议。
    后面 readme 内容会补充调整,增加项目文档后也可以把部分繁琐的内容放到项目文档中。
    heqingpan
        9
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @capric
    数据是写在本地的 log 和 snapshot 文件,通过 raft 协议复制到其它集群节点。

    可以把它理解为通过 raft 管理的分布式数据库。
    cornorj6
        10
    cornorj6  
       2025 年 4 月 21 日
    非常棒,支持楼主。已经用上了,顺便问下 namespace 功能可用吗?没有看到怎么配置它。
    capric
        11
    capric  
       2025 年 4 月 21 日
    @heqingpan 不错的,加油,比 xxl-job 持久化到 mysql 好用
    xavierniu
        12
    xavierniu  
       2025 年 4 月 21 日
    Rust 重写一切 +1 :)
    heqingpan
        13
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @cornorj6
    namespace 算增强功能,目前暂时还不可用。

    namespace 功能启用,需要先解决它和 xxl token 映射的问题。目前有几个可选方案,不过还没有最后确定;方案确定后很快就可支持。
    zhangxudong
        14
    zhangxudong  
       2025 年 4 月 21 日
    能不能加一个查看查看当前时间点有哪些任务在运行的统计,还有所有任务运行的时间点统计
    netme
        15
    netme  
       2025 年 4 月 21 日
    看了 r-nacos , 在期待 xxljob , 果然来了,楼主牛批
    heqingpan
        16
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @capric
    @netme
    感谢支持鼓励😄
    heqingpan
        17
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @zhangxudong
    目前的系统监控页中,有对每个间隔内的任务调度数量统计展示。有最小间隔(默认 15 秒,最小可设置为 5 秒)、分钟间隔、小时间隔三类数据,每类数据可记录展示最近 180 数据,方便查看任务在不同时间的调度水位。
    heqingpan
        18
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    如果要查看当前时间的任务调度列表的话,可以从最近调度记录中查看具体数据。

    如果还有其它场景的统计数据需要支持,可以在项目中提 issue 详细描述一下,如果是比较通用、常用的功能会考虑支持。
    yangg
        19
    yangg  
       2025 年 4 月 21 日
    没用过 xxl job ,光看文档看不出怎么使用的。

    另外点击 切换语言从 en 到中时,跳转了一个出错页面
    heqingpan
        20
    heqingpan  
    OP
       2025 年 4 月 21 日 via Android
    @yangg
    看来目前的 readme 文档对没有使用过 xxl-job 的用户不友好,后面会优化文档增强这部分内容说明。

    我刚试了下,首页切换英文会刷新页面,首页路径权限没有被正确设置,所以被跳转到没有权限页面(目前的功能权限使用白名单模式能行)。
    其它页面没有这个问题。

    这是个小 bug 基本不影响正常使用,下个版本会修复。
    zhangxudong
        21
    zhangxudong  
       2025 年 4 月 22 日
    @heqingpan #17 我的场景是某个时间点系统临时需要维护,那我就需要看一下这个时间点会有哪些 job 要跑,我需要先临时停掉这些 job ,等维护完之后再启动这些 job
    heqingpan
        22
    heqingpan  
    OP
       2025 年 4 月 22 日 via Android   ❤️ 1
    @zhangxudong

    看起来你是想获取未来一小段时间哪些任务即将要运行。
    未来的调度时间,对 cron 这种比较好计算,对后面的执行后固定延迟这种不好计算。

    ----

    使用现有的全局最近执行记录功能,可能也能基本解决你这个场景的问题。

    1. 维护应用系统前,看看当前是否有正在运行的任务,没有则开始维护
    2. 维护应用过程如果有任务调度会直接失败,最近执行记录有对应失败的记录。
    3. 维护应用完成后,查看最近执行失败的记录,手动触发。后续的任务也会自动正常调度。
    上面过程可能存在边界情况,运行中的任务被杀进程。这种就要业务系统判断是否要手动补触发。

    你看看这样处理是否也可以解决你们的问题?
    yehoha
        23
    yehoha  
       2025 年 5 月 3 日
    xxx-job 不支持固定延迟,ratch-job 支持么
    heqingpan
        24
    heqingpan  
    OP
       2025 年 5 月 4 日 via Android
    @yehoha 目前还没有支持,有计划支持(已写在上面的第 3 步计划中),大概后面第二个版本可支持。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2784 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:09 · PVG 21:09 · LAX 05:09 · JFK 08:09
    ♥ Do have faith in what you're doing.