Openjob 1.0.2 重磅发布,新一代分布式任务调度框架
什么是 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 实现分布式数据计算。对于复杂的任务流或任务编排场景可以使用可视化工作流,轻松解决。
开源对比
更新内容
Openjob v1.0.2 版本新增任务仪表盘、任务数据自动清理、日志存储支持 Elasticsearch 以及修复若干已知问题。
新增
修复
优化
更多内容
在线体验: https://demo.openjob.io
QQ 交流群: 849015265
评论