⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 github.com/open-job/openjob 「open-job」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

介绍

Openjob一款全面的高性能任务调度框架,支持多种定时任务、延迟任务、工作流设计、轻量级计算、无限水平扩容,并具有无可比拟的可伸缩性和容错性,以及完善权限管理、强大的对称监控、原生支持多语言。

特性

高可靠

多种无状态设计,采用Master/Worker架构,支持多种数据库(MySQL/PostgreSQL/Oracle)

性能

底层采用一致性分片算法,全程无锁化设计,任务调度精确到秒级,支持水平轻量级计算、无限扩容。

定时

支持定时任务、固定频率任务、高性能秒级任务、间歇任务定时调度。

全局计算

单机、广播、Map、MapReduce和分片多种编程模型,轻松实现大数据计算支持。

延迟任务

基于Redis实现高性能延迟任务,底层实现任务多级存储,提供丰富的统计和报表。

工作流程

内置工作流调度引擎,支持可视化DAG设计,简单实现高效复杂任务调度。

权限管理

完善的用户管理,支持菜单、按钮以及数据权限设置,灵活管理用户权限

报警监控

全面的监控指标,丰富及时的报警方式,基于运维人员快速定位和解决线上问题。

跨语言

最初支持 Java/Go/PHP/Python 多语言,以及 Spring Boot、Gin、Swoft 等框架集成。

使用

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
文章目录
  1. 1. 介绍
  2. 2. 特性
    1. 2.0.1. 高可靠
    2. 2.0.2. 性能
    3. 2.0.3. 定时
    4. 2.0.4. 全局计算
    5. 2.0.5. 延迟任务
    6. 2.0.6. 工作流程
    7. 2.0.7. 权限管理
    8. 2.0.8. 报警监控
    9. 2.0.9. 跨语言
  • 3. 使用
    1. 3.0.1. Docker 拉取镜像
    2. 3.0.2. 运行容器
  • 4. 优势对比
  • 5. 文档