什么是 Openjob?
Openjob 基于Akka架构的新一代分布式任务调度框架。支持多种定时任务、延时任务、工作流设计,采用无中心化架构,底层使用一致性分片算法,支持无限水平扩容。
  • 完善的任务日志存储,支持 H2/Mysql/oracle/Postgresql/Elasticsearch
  • 任务运行堆栈功能可详细记录任务运行过程,帮助管理员快速排查问题
  • 报警与权限功能也极为重要,它提供任务事件监控报警,以及详细的报警历史记录
  • 管理员可以使用企业微信、飞书、webhook等渠道接收报警信息。
  • 命名空间方式设计,支持按钮级别权限管理,轻松应对复杂的项目管理。
  • 支持多种编程语言,如 Java,Go,PHP 和 Python,各个语言的支持度都非常友好。
如果您正在寻找一款高性能的分布式任务调度框架,支持定时任务、延时任务、轻量级计算、工作流编排,并且支持多种编程语言,那么 Openjob 肯定是不二之选。
特性
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/Oracle/Postgresql/Elasticsearch)
  • 监控大盘
  • 操作记录
  • 查看日志堆栈
可运维
启用、禁用任务
  • 启用、禁用任务
  • 手动运行任务
  • 停止任务
  • 启用、禁用任务
  • 手动运行任务
  • 停止任务
报警监控
邮件
邮件
  • 邮件
  • webhook
  • 企微
  • 飞书
性能
每次调度通过DB抢锁,对DB压力大
ZooKeeper是性能瓶颈
由Master节点调度,Master节点压力大。
任务采用分片算法,每个节点都可以调度,无性能瓶颈,支持无限水平扩展,支持海量任务调度。
 
更新内容
Openjob v1.0.5 新增 Agent 以及修复若干已知问题。
[root@openjob ~]$ java -jar openjob-agent-java-xxx.jar -h
Usage: Openjob-agent-java [-hV] [-s=<serverAddress>]
[--worker-app-name=<workerAppName>]
[--worker-heartbeat-fail-times=<heartbeatFailTimes>]
[--worker-heartbeat-interval=<heartbeatInterval>]
[--worker-host=<workerHost>]
[--worker-port=<workerPort>]
-h, --help Show this help message and exit.
-s, --server-address=<serverAddress>
Server address, default is `http://localhost:8080`
-V, --version Print version information and exit.
--worker-app-name=<workerAppName>
Application name, default is `openjob`
--worker-heartbeat-fail-times=<heartbeatFailTimes>
Worker heartbeat fail times, default is `2`
--worker-heartbeat-interval=<heartbeatInterval>
Worker heartbeat interval, default is `5`
--worker-host=<workerHost>
Worker host, default is local IP
--worker-port=<workerPort>
Worker port, default is `25588`
新增
修复
  • [#137] 客户端心跳异常退出
  • [#137] unix 平台终止 Kettle
优化
  • [#139] 任务实例状态上报
  • [#139] 延时实例状态上报
更多内容
  • openjob
  • openjob.io
  • QQ交流群: 849015265
 

Openjob 1.0.5 发布,新增 Agent的更多相关文章

  1. smartjs 0.2发布 - 新增oop模块&AOP增强

    SmartJS2.0发布,更新内容如下: 新增oop(klass,factory)模块: promiseEvent加入非阻塞模式noBlock: trigger加入属性监听; smartjs主模块优化 ...

  2. hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

    相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...

  3. 跨年呈献:HP-Socket for Linux 1.0 震撼发布

    三年,三年,又三年,终于,终于,终于不用再等啦!就在今天,HP-Socket for Linux v1.0 震撼发布!还是一样的接口,一样的高效,一样的简便,一样的味道.     HP-Socket ...

  4. WordPress版微信小程序2.2.0版发布

    2017年8月12日WordPress版微信小程序2.2.0版通过了微信的审核正式发布,此版本的更新以完善功能为主.主要更新的功能是:站内链接,猜你喜欢,热点文章. WordPress版微信小程序开放 ...

  5. BlueMind 3.0.17 发布,消息和协作平台

    BlueMind 3.0.17 发布,此版本对即时消息 Web 应用连接处理做了较大改进(更可靠),还修复了通讯录浏览器. BlueMind 3.0.17 现已提供下载. 详细改进记录如下: Addr ...

  6. MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍

    ySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8. ...

  7. .NET Core 3.0即将发布!

    期待已久的.NET Core 3.0即将发布! .NET Core 3.0在.NET Conf上发布.大约还有9个多小时后,.NET Conf开始启动. 为期3天的大概日程安排如下: 第1天-9月23 ...

  8. Apache Kylin v3.0.0-alpha 发布

    Apache Kylin v3.0.0-alpha 发布 Apr 19, 2019 • Shaofeng Shi 近日 Apache Kylin 社区很高兴地宣布,Apache Kylin v3.0. ...

  9. [转帖]谷歌TF2.0凌晨发布!“改变一切,力压PyTorch”

    谷歌TF2.0凌晨发布!“改变一切,力压PyTorch” https://news.cnblogs.com/n/641707/ 投递人 itwriter 发布于 2019-10-01 12:38 评论 ...

  10. JEECG 4.0 版本发布,JAVA快速开发平台

    JEECG 4.0 版本发布,系统全面优化升级,更快,更稳定!         导读                               ⊙平台性能优化,系统更稳定,速度闪电般提升      ...

随机推荐

  1. 在web浏览器中如何操作复合IC卡

    在web浏览器中如何操作复合IC卡呢, 对于使用javascript的工程师而言,非常简单,只需要几行代码即可实现.当然在写代码之前, 需要安装友我NFC读写器web插件, 然后插上NFC读写器YW- ...

  2. CSS 点击穿透pointer-events

    在项目中,当需要展示一个元素在最顶层,但又不想让它影响下层的交互,可以pointer-events:none pointer-events介绍 pointer-events: auto | none ...

  3. 使用Jmeter进行CPU、内存等监控

    一.需要的准备 1.jp@gc - PerfMon Metrics Collector插件(安装方法就不过多介绍啦!) 2.ServerAgent服务器(下载:https://github.com/u ...

  4. boot-admin整合Liquibase实现数据库版本管理

    Liquibase 和 Flyway 是两款成熟的.优秀的.开源/商业版的数据库版本管理工具,鉴于 Flyway 的社区版本对 Oracle 数据库支持存在限制,所以 boot-admin 选择整合 ...

  5. hibernate及SpringBoot集成Jpa实现对数据库操作

    首先使用Maven工程和junit完成hibernate对数据库的简单操作,完成之后在使用SpringBoot集成Jap完成hibernate对数据库的操作.本文仅供新手学习查看,具体线上使用需要对代 ...

  6. 2020-12-06:mysql中,多个索引会有多份数据吗?

    福哥答案2020-12-06: 数据不会有多份,索引有几个就有几份.聚簇索引存数据和索引,非聚簇索引存索引,聚簇索引只有一个,非聚簇索引可以有多个.

  7. 2022-02-06:等差数列划分 II - 子序列。 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称

    2022-02-06:等差数列划分 II - 子序列. 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目. 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称 ...

  8. 2022-01-13:K 个不同整数的子数组。 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。 (例如,[1,2,3,1

    2022-01-13:K 个不同整数的子数组. 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续.不一定不同的子数组为好子数组. (例如,[1,2,3,1 ...

  9. vue全家桶进阶之路12:监听器 watch

    在Vue2中,监听器(watch)用于监测数据的变化,并在数据变化时执行一些操作.监听器可以用来响应用户输入.观察数据变化.执行异步操作等. 监听器的使用方法如下: 在组件的watch选项中定义一个或 ...

  10. 园子的商业化努力-AI人才服务:招募AI导师

    各位园子的小伙伴: 感谢大家对园子的支持,园子差不多接近20年的历程,一直是最低配模式生存和发展,感谢大家对于前段时间的困局给予了商业化的各种建议!在大家的鼓励与支持之下,园子的商业化努力正在以更快的 ...