分布式任务调度框架选择,Openjob 1.0.3 发布,分布式任务调度框架

科技资讯 投稿 6600 0 评论

什么是 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.3 优化集群通信、优化任务日志上报、优化客户端心跳以及修复集群分片。

修复

    [#109] 修复时间轮计算不正确问题
  • [#109] 修复集群无法连接问题
  • [#109] 修复集群延时任务分片不正确问题
  • [#109] 修复集群任务分片不正确问题

优化

    [#109] 优化集群连接方式
  • [#109] 优化工作节点心跳
  • [#109] 优化执行器日志上报

更多内容

    官网: https://openjob.io
  • Github: https://github.com/open-job/openjob
  • Gitee: https://gitee.com/openjob/openjob
  • 在线体验: https://demo.openjob.io

编程笔记 » 分布式任务调度框架选择,Openjob 1.0.3 发布,分布式任务调度框架

赞同 (35) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽