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

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

  •  1
     
  •   heqingpan · 18 天前 · 2203 次点击

    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  
       18 天前 via iPhone
    🐮
    1103409364
        2
    1103409364  
       18 天前
    🐂
    5261
        3
    5261  
       18 天前
    需要 rust 新手协助不 哈哈
    Gilfoyle26
        4
    Gilfoyle26  
       18 天前
    一些建议:
    1.README 内容好好捯饬捯饬
    2.git commit 尽量使用英文
    capric
        5
    capric  
       18 天前
    任务和规则持久化用的是什么
    capric
        6
    capric  
       18 天前
    @capric async-raft-ext 日志复制吗?
    heqingpan
        7
    heqingpan  
    OP
       18 天前 via Android
    @5261 欢迎协助😊

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

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

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

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

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

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

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

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

    ----

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

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

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