rust 重写 xxl-job 的项目 ratch-job,第一个对外正式版本 v0.1.4 发布,任务调度 tps 可以稳定超过每秒 1 万次,感兴趣的同学欢迎试用、交流反馈。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
heqingpan
V2EX    程序员

rust重写 xxl-job 的项目 ratch-job,第一个对外正式版本 v0.1.4 发布,任务调度 tps 可以稳定超过每秒 1 万次,感兴趣的同学欢迎试用、交流反馈。

  •  
  •   heqingpan 202 天前 3162 次点击
    这是一个创建于 202 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初始正式版本包含核心内容,可满足用户核心使用场景:

    1. 完成兼容 xxl-job 协议任务调度功能。
    2. 完成内置的 raft 分布式存储,支持不依赖外部数据库进行分布式部署。
    3. 自带 web 控制台管理。

    项目地址: ratch-job

    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 的任务调度;目前核心接口已完成,待增加认证机制与对应的文档;
    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
    • 100tps

    • 1000tps

    • 2000tps

    • 5000tps

    • 10000tps

    项目地址: ratch-job; 认可项目的同学,请求给项目个星,感谢!

    19 条回复    2025-03-31 22:48:24 +08:00
    yb2313
        1
    yb2313  
       202 天前
    这个是什么, 类似 airflow 那样的东西吗
    heqingpan
        2
    heqingpan  
    OP
       202 天前 via Android
    @yb2313 有点类似,xxl-job 和业务应用联系更紧密一些,它支持在业务应用进程调度执行任务。
    KInG2
        3
    KInG2  
       202 天前
    @yb2313 类似于 crontab 吧
    yangg
        4
    yangg  
       202 天前
    不错正在找相关的东西。
    heqingpan
        5
    heqingpan  
    OP
       202 天前 via Android   1
    @KInG2 crontab 相对上面提到的服务,功能上还是太简陋了些。比如单点,任务管理、任务执行状态、任务执行记录查看等功能都不能很多支持。
    xxl-job 是个比较流行的分布式调度平台,搜索一下应该就可以知道它是干什么的。
    foufoufm
        6
    foufoufm  
       202 天前
    感谢,有帮助,想知道服务稳定吗? 如果合适的话,可以拿来先上手写自己项目上的定时任务
    guotie
        7
    guotie  
       202 天前
    做成云服务去赚钱
    heqingpan
        8
    heqingpan  
    OP
       202 天前 via Android
    @foufoufm
    服务目前应该算比较稳定。
    我也是 r-nacos 的作者,这是我用 rust 重写的第二个中间件服务。
    在发布前除了常规的功能测试,还专门写了工具模拟真实的性能压力测试(结果可参考上面的性能说明)。
    在稳定性这块我已尽力做到最好才发出来,我对这个版本的功能稳定性还是比较有信心的。
    CloudnuY
        9
    CloudnuY  
       202 天前
    好棒,准备在测试环境先替换上试试
    heqingpan
        10
    heqingpan  
    OP
       202 天前 via Android
    @CloudnuY
    很合理的策略,在测试环境充分测试验证后,才能考虑在正式环境使用。
    heqingpan
        11
    heqingpan  
    OP
       202 天前 via Android
    使用过程中有遇到什么问题欢迎提 issue 反馈。
    heqingpan
        12
    heqingpan  
    OP
       202 天前 via Android
    @guotie
    这种应该需要在云服务商提供才能走通。
    精力只足够写写开源代码,暂时不考虑这块。
    KInG2
        13
    KInG2  
       202 天前
    @heqingpan 主要碰到好多人就配置个定时调用接口,我感觉不如配置 crontab 了,还方便点,具体的深度使用我觉得的看业务的需求。
    PeiXyJ
        14
    PeiXyJ  
       202 天前
    @KInG2 这个更适合有多个服务,比如我上的 K8S 每个 Service 都有多个副本,那么就需要 XJ 这样的帮我调用其中一个 Service 做业务处理,而不是多个 Service 都同时做.
    PeiXyJ
        16
    PeiXyJ  
       202 天前   1
    ddxx200
        17
    ddxx200  
       202 天前
    这个不错,点赞
    heqingpan
        18
    heqingpan  
    OP
       202 天前 via Android
    @KInG2 确实具体的要看业务需求。
    如果调用的服务小概率失败影响不大,任务变更不频繁用 crontab 也比较方便。
    如果还需要额外的配套进行保障的话,使用这类服务应该会方便些。
    heqingpan
        19
    heqingpan  
    OP
       202 天前
    @foufoufm
    @CloudnuY
    @ddxx200
    感谢支持。
    如果使用遇到什么问题欢迎反馈。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     924 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:26 PVG 02:26 LAX 11:26 JFK 14:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86