什么是 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 以及修复若干已知问题。
新增
- [#95] 新增 Elasticsearch7 日志存储
- [#98] 首页新增工作和零碎数据
- [#99] 新增工作实例、延时实例、集群节点、Server 节点以及日志清理
修复
- [#95] 修复治理后盾接口申请域名
- [#96] 修复分片算法
- [#99] 修复延时工作缓存
- [#99] 修复延时工作执行工夫问题
- [#101] 修复同一个机器多个客户端 Akka 长久化抵触问题
优化
- [#97] Bean Mapper
- [#99] 优化利用注册
更多内容
- 官网: https://openjob.io
- Github: https://github.com/open-job/openjob
- 在线体验: https://demo.openjob.io
- QQ 交换群: 849015265