Openjob 基于 Akka 架构的新一代分布式任务调度框架。支持多种定时任务、延时任务、工作流设计,采用无中心化架构,底层使用一致性分片算法,支持无限水平扩容。
Openjob 除了支持基本的任务调度,还提供延时任务、分布式计算以及工作流。
单机,随机选择一台机器完成任务执行。
广播,应用所有机器同时执行且等待全部结束。
Map 模型,类似于 Hadoop 的 Map 。只需简单实现一个 Map 方法,就可以将海量数据分布到多台机器上执行。
MapReduce 模型,MapReduce 模型是 Map 模型的扩展。所有子任务执行完成后执行 Reduce 方法,可以在 Reduce 方法中处理任务运行结果和数据。
静态分片,类似 Elastic-Job 模型,控制台配置分片数,可以按照分片分配到不同的客户端执行,支持多语言版本。
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 以及修复若干已知问题。
新增
修复
优化
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.