更强大、更全面的高性能任务调度框架:Openjob 重磅来袭!
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:
Boot 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 项目地址:https://gitee.com/zhijiantianya/yudao-cloud 视频教程:https://doc.iocoder.cn
介绍
Openjob一款全面的高性能任务调度框架,支持多种定时任务、延迟任务、工作流设计、轻量级计算、无限水平扩容,并具有无可比拟的可伸缩性和容错性,以及完善权限管理、强大的对称监控、原生支持多语言。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro 视频教程:https://doc.iocoder.cn/video/
特性
高可靠
多种无状态设计,采用Master/Worker架构,支持多种数据库(MySQL/PostgreSQL/Oracle)
性能
底层采用一致性分片算法,全程无锁化设计,任务调度精确到秒级,支持水平轻量级计算、无限扩容。
定时
支持定时任务、固定频率任务、高性能秒级任务、间歇任务定时调度。
全局计算
单机、广播、Map、MapReduce和分片多种编程模型,轻松实现大数据计算支持。
延迟任务
基于Redis实现高性能延迟任务,底层实现任务多级存储,提供丰富的统计和报表。
工作流程
内置工作流调度引擎,支持可视化DAG设计,简单实现高效复杂任务调度。
权限管理
完善的用户管理,支持菜单、按钮以及数据权限设置,灵活管理用户权限
报警监控
全面的监控指标,丰富及时的报警方式,基于运维人员快速定位和解决线上问题。
跨语言
最初支持 Java/Go/PHP/Python 多语言,以及 Spring Boot、Gin、Swoft 等框架集成。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud 视频教程:https://doc.iocoder.cn/video/
使用
Docker 拉取镜像
docker pull openjob/openjob-server:latest
运行容器
新增一个配置文件 .env,配置正确可用的数据库地址。
AKKA_REMOTE_HOSTNAME=LocalIP
OJ_DS_URL=jdbc:mysql://172.20.0.235:3306/openjob?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
OJ_LOG_STORAGE_MYSQL_URL=jdbc:mysql://172.20.0.235:3306/openjob?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
提示
数据库必须手动创建 容器运行涉及多项参数配置,使用配置文件更方便,其次也可以启动时通过命令传递参数(环境变量)。 配置 AKKA_REMOTE_HOSTNAME
为当前机器 IP,不能是 127.0.0.1,否则会导致网络不通,客户端通过 IP 连接 Server。
运行命令
docker run --env-file .env -it -d -p 8080:8080 -p 25520:25520 openjob/openjob-server:latest /bin/bash
运行成功,访问 http://127.0.0.1:8080/
账号: openjob 密码: openjob.io
优势对比
项目 | Quartz | Elastic-Job | XXL-JOB | Openjob |
---|---|---|---|---|
定时调度 | Cron | Cron | Cron | 1. 定时任务 2. 秒级任务 3. 一次性任务 4.固定频率 |
延时任务 | 不支持 | 不支持 | 不支持 | 基于 Redis 实现分布式高性能延时任务,实现定时与延时一体化 |
任务编排 | 不支持 | 不支持 | 不支持 | 通过图形化编排任务(workflow) |
分布式计算 | 不支持 | 静态分片 | 广播 | 1. 广播 2. Map/MapReduce 3.多语言静态分片 |
多语言 | Java | 1. Java 2.脚本任务 | 1.Java 2.脚本任务 | 1.Java 2.Go(Gin、beego) 3.PHP(Swoft) 4.Python(Agent) 5.脚本任务 6.HTTP任务 |
可视化 | 无 | 弱 | 1.历史记录 2.运行日志(不支持存储) 3.监控大盘 | 1.历史记录 2.运行日志(支持 H2/Mysql/Elasticsearch) 3.监控大盘 4.操作记录 5.查看日志堆栈 |
可运维 | 无 | 启用、禁用任务 | 1.启用、禁用任务 2.手动运行任务 3.停止任务 | 1.启用、禁用任务 2.手动运行任务 3.停止任务 |
报警监控 | 无 | 邮件 | 邮件 | 1.邮件 2.webhook 3.企微 4.飞书 |
性能 | 每次调度通过DB抢锁,对DB压力大 | ZooKeeper是性能瓶颈 | 由Master节点调度,Master节点压力大。 | 任务采用分片算法,每个节点都可以调度,无性能瓶颈,支持无限水平扩展,支持海量任务调度。 |
Openjob 适用于业务有一定的定时任务需求,非常适用于定时任务与延时任务一体化解决场景,比如每天凌晨数据清理、生成数据报表。同时适用于轻量级计算,可以使用 Map/MapReduce 实现分布式数据计算。对于复杂的任务流或任务编排场景可以使用可视化工作流,轻松解决。
文档
官方网站
https://openjob.io/
官方文档
https://openjob.io/zh-Hans/docs/intro/
Github
https://github.com/open-job/openjob
欢迎加入我的知识星球,全面提升技术能力。
加入方式,长按下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
微信扫码关注该文公众号作者