V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jxia
V2EX  ›  Java

Openjob 1.0.2 重磅发布,新一代任务调度框架

  •  2
     
  •   jxia · 2023-06-07 10:27:50 +08:00 · 1384 次点击
    这是一个创建于 534 天前的主题,其中的信息可能已经有所发展或是发生改变。

    什么是 Openjob?

    Openjob 基于 Akka 架构的新一代分布式任务调度框架。支持多种定时任务、延时任务、工作流设计,采用无中心化架构,底层使用一致性分片算法,支持无限水平扩容。

    特性

    Openjob 除了支持基本的任务调度,还提供延时任务、分布式计算以及工作流。

    定时任务
    • 普通定时任务,支持 Unix Crontab 表达式。
    • 秒级定时任务,适用于对实时性要求比较高的业务,例如执行间隔为 3 秒的定时调度任务。
    • 固定频率任务,Crontab 必须被 60 整除,不支持其它数量级时间间隔的任务,一般用于定期轮询场景。
    延时任务
    • 基于 Redis 实现高性能延时任务,一体化解决定时任务和延时任务,同时提供丰富的报表与统计。
    分布式计算
    • 单机,随机选择一台机器完成任务执行。

    • 广播,应用所有机器同时执行且等待全部结束。

    • Map 模型,类似于 Hadoop 的 Map 。只需简单实现一个 Map 方法,就可以将海量数据分布到多台机器上执行。

    • MapReduce 模型,MapReduce 模型是 Map 模型的扩展。所有子任务执行完成后执行 Reduce 方法,可以在 Reduce 方法中处理任务运行结果和数据。

    • 静态分片,类似 Elastic-Job 模型,控制台配置分片数,可以按照分片分配到不同的客户端执行,支持多语言版本。

    执行器
    • 普通执行器,普通函数或类的方式执行任务
    • HTTP ,定时请求固定的地址。
    • Shell,定时执行 shell 脚本
    可视化运维
    • 任务仪表盘,丰富的任务统计和报表。
    • 任务历史执行记录,任务执行历史追溯。
    • 任务运行日志,完善的任务日志存储(H2/Mysql/Elasticsearch)
    • 任务运行堆栈,详细记录任务运行堆栈信息。

    报警与权限

    • 提供任务事件监控报警,以及详细的报警历史,同时支持企业微信、飞书、webhook 触达通知。
    • 命名空间方式设计,支持按钮级别权限管理,轻松应对复杂的项目管理。
    多语言
    • Java 及其衍生框架,原生支持。
    • Go 支持 go mod 方式安装依赖,以及常见框架整合(Gin)。
    • PHP 支持通过 Golang agent 方式执行 PHP 任务。基于 Swoole 衍生框架(Swoft),支持 Composer 安装依赖直接使用。
    • Python 支持通过 Golang agent ,方式执行 Python 任务。

    适用场景

    Openjob 适用于业务有一定的定时任务需求,非常适用于定时任务与延时任务一体化解决场景,比如每天凌晨数据清理、生成数据报表。同时适用于轻量级计算,可以使用 Map/MapReduce 实现分布式数据计算。对于复杂的任务流或任务编排场景可以使用可视化工作流,轻松解决。

    开源对比

    项目 Quartz Elastic-Job XXL-JOB Openjob
    定时调度 Cron Cron Cron * 定时任务
    * 秒级任务
    * 一次性任务
    * 固定频率
    延时任务 不支持 不支持 不支持 基于 Redis 实现分布式高性能延时任务,实现定时与延时一体化
    任务编排 不支持 不支持 不支持 通过图形化编排任务(workflow)
    分布式计算 不支持 静态分片 广播 * 广播
    * Map/MapReduce
    * 多语言静态分片
    多语言 Java * Java
    * 脚本任务
    * Java
    * 脚本任务
    * Java
    * Go(Gin 、beego)
    * PHP(Swoft)
    * Python(Agent)
    * 脚本任务
    * HTTP 任务
    可视化 * 历史记录
    * 运行日志(不支持存储)
    * 监控大盘
    * 历史记录
    * 运行日志(支持 H2/Mysql/Elasticsearch )
    * 监控大盘
    * 操作记录
    * 查看日志堆栈
    可运维 启用、禁用任务 * 启用、禁用任务
    * 手动运行任务
    * 停止任务
    * 启用、禁用任务
    * 手动运行任务
    * 停止任务
    报警监控 邮件 邮件 * 邮件
    * webhook
    * 企微
    * 飞书
    性能 每次调度通过 DB 抢锁,对 DB 压力大 ZooKeeper 是性能瓶颈 由 Master 节点调度,Master 节点压力大。 任务采用分片算法,每个节点都可以调度,无性能瓶颈,支持无限水平扩展,支持海量任务调度。

    更新内容

    Openjob v1.0.2 版本新增任务仪表盘、任务数据自动清理、日志存储支持 Elasticsearch 以及修复若干已知问题。

    image

    新增

    • [#95] 新增 Elasticsearch7 日志存储
    • [#98] 首页新增任务和系统数据
    • [#99] 新增任务实例、延时实例、集群节点、Server 节点以及日志清理

    修复

    • [#95] 修复管理后台接口请求域名
    • [#96] 修复分片算法
    • [#99] 修复延时任务缓存
    • [#99] 修复延时任务执行时间问题
    • [#101] 修复同一个机器多个客户端 Akka 持久化冲突问题

    优化

    • [#97] Bean Mapper
    • [#99] 优化应用注册

    更多内容

    2 条回复    2023-06-09 14:54:42 +08:00
    iMonicaPu
        1
    iMonicaPu  
       2023-06-08 20:16:19 +08:00
    可以做到 服务重启时任务不中断 吗
    jxia
        2
    jxia  
    OP
       2023-06-09 14:54:42 +08:00
    @iMonicaPu 可以的,节点新增、上下线不影响
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.