关于后端:Openjob-102-重磅发布新一代任务调度框架

12次阅读

共计 1922 个字符,预计需要花费 5 分钟才能阅读完成。

什么是 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
正文完
 0