什么是 Openjob?
Openjob 基于 Akka 架构的新一代分布式任务调度框架。支持多种定时任务、延时任务、工作流设计,采用无中心化架构,底层使用一致性分片算法,支持无限水平扩容。
如果您正在寻找一款高性能的分布式任务调度框架,支持定时任务、延时任务、轻量级计算、工作流编排,并且支持多种编程语言,那么 Openjob 肯定是不二之选。
特性
Openjob 除了支持基本的任务调度,还提供延时任务、分布式计算以及工作流。
定时任务
延时任务
分布式计算
单机,随机选择一台机器完成任务执行。
广播,应用所有机器同时执行且等待全部结束。
Map 模型,类似于 Hadoop 的 Map 。只需简单实现一个 Map 方法,就可以将海量数据分布到多台机器上执行。
MapReduce 模型,MapReduce 模型是 Map 模型的扩展。所有子任务执行完成后执行 Reduce 方法,可以在 Reduce 方法中处理任务运行结果和数据。
静态分片,类似 Elastic-Job 模型,控制台配置分片数,可以按照分片分配到不同的客户端执行,支持多语言版本。
执行器
可视化运维
报警与权限
多语言
适用场景
Openjob 适用于业务有一定的定时任务需求,非常适用于定时任务与延时任务一体化解决场景,比如每天凌晨数据清理、生成数据报表。同时适用于轻量级计算,可以使用 Map/MapReduce 实现分布式数据计算。对于复杂的任务流或任务编排场景可以使用可视化工作流,轻松解决。
开源对比
[td]项目[/td]
[td]Quartz[/td]
[td]Elastic-Job[/td]
[td]XXL-JOB[/td]
[td]Openjob[/td]
定时调度
Cron
Cron
Cron
* 定时任务
* 秒级任务
* 一次性任务
* 固定频率
延时任务
不支持
不支持
不支持
基于 Redis 实现分布式高性能延时任务,实现定时与延时一体化
任务编排
不支持
不支持
不支持
通过图形化编排任务(workflow)
分布式计算
不支持
静态分片
广播
* 广播
* Map/MapReduce
* 多语言静态分片
多语言
Java
* Java
* 脚本任务
* Java
* 脚本任务
* Java
* Go(Gin 、beego)
* PHP(Swoft)
* Python(Agent)
* 脚本任务
* HTTP 任务
可视化
无
弱
* 历史记录
* 运行日志(不支持存储)
* 监控大盘
* 历史记录
* 运行日志(支持 H2/Mysql/Oracle/Postgresql/Elasticsearch )
* 监控大盘
* 操作记录
* 查看日志堆栈
可运维
无
启用、禁用任务
* 启用、禁用任务
* 手动运行任务
* 停止任务
* 启用、禁用任务
* 手动运行任务
* 停止任务
报警监控
无
邮件
邮件
* 邮件
* webhook
* 企微
* 飞书
性能
每次调度通过 DB 抢锁,对 DB 压力大
ZooKeeper 是性能瓶颈
由 Master 节点调度,Master 节点压力大。
任务采用分片算法,每个节点都可以调度,无性能瓶颈,支持无限水平扩展,支持海量任务调度。
更新内容
Openjob v1.0.5 新增 Agent 以及修复若干已知问题。
[[email protected] ~]$ java -jar openjob-agent-java-xxx.jar -h
Usage: Openjob-agent-java [-hV] [-s=]
[--worker-app-name=]
[--worker-heartbeat-fail-times=]
[--worker-heartbeat-interval=]
[--worker-host=]
[--worker-port=]
-h, --help Show this help message and exit.
-s, --server-address=
Server address, default is `http://localhost:8080`
-V, --version Print version information and exit.
--worker-app-name=
Application name, default is `openjob`
--worker-heartbeat-fail-times=
Worker heartbeat fail times, default is `2`
--worker-heartbeat-interval=
Worker heartbeat interval, default is `5`
--worker-host=
Worker host, default is local IP
--worker-port=
Worker port, default is `25588`
新增
修复
优化
更多内容
在线体验: https://demo.openjob.io