1 什么是Openjob
Openjob是一种基于Akka的新分布式任务调度框架。支持多种cronjob、延迟任务和工作流,使用一致性分片算法,具备无限的水平扩展。
2 特性
Openjob不仅支持基本的cronjob,还支持延迟任务、分布式计算和工作流。
2.1 Cronjob
Openjob支持Cronjob任务调度,具备以下特点:
- 支持Unix Crontab表达式
- 秒级别,执行周期小于60秒
- 固定频率,以分钟为单位执行任务
2.2 延迟任务
Openjob支持基于Redis的分布式高性能延迟任务,并提供丰富的报告和统计信息,这种延迟任务能够保证高效、可靠地执行。
2.3 分布式计算
Openjob支持分布式计算,可实现以下功能:
- 独立执行:任务可在工作客户端上独立执行。
- 广播执行:任务可在所有工作客户端上广播执行。
- 映射执行:映射函数可以将大数据分发到多台机器上执行,类似于Hadoop map
- MapReduce:MapReduce是Map的扩展。在所有Map子任务完成后,执行Reduce方法,可以在Reduce方法中处理任务执行的结果和数据。
- 分片:类似于Elastic-Job模型,在管理上配置分片数,可以通过分片调度到不同的客户端,并支持多种语言。
2.4 处理器
Openjob提供处理器功能,可通过函数或类执行任务,支持Java、Golang和PH语言。同时,还支持以下处理器类型:
- HTTP:可用于定期请求HTTP。
- Shell:可用于执行shell脚本。
2.5 可视化操作
Openjob提供可视化操作功能,包含以下内容:
- 仪表板:提供丰富的任务统计和报告功能,方便用户对任务执行情况进行实时监控和分析。
- 任务历史记录:记录任务执行的历史记录,方便用户查看任务的执行情况和结果。
- 任务日志:提供完整的任务日志,并支持存储到H2、Mysql、Elasticsearch等多种数据库中,方便用户查询和分析任务执行的详细信息。
- 任务运行栈:详细记录任务执行的栈信息,方便用户排查任务执行中的问题和错误。
2.6 警报和权限
Openjob提供警报和权限管理功能,包括以下内容:
- 提供任务事件监控警报、详细的警报历史记录,并支持微信、飞书和Webhook触发器通知。
- 设计有命名空间,支持按按钮级别访问控制,方便用户对复杂项目进行管理和维护。
2.7 多种语言
Openjob支持多种语言和框架,包括以下内容:
- Java和其框架:原生支持。
- Go:支持使用go mod install命令来管理Go语言的依赖。
- PHP:支持使用Golang代理以shell模式执行任务,同时支持Swoole框架的composer install命令。
- Python支持使用Golang代理以shell模式执行任务,方便用户使用Python语言编写任务。
3 应用场景
Openjob非常适用于具有任务调度和延迟任务的业务场景,例如每天清理数据和生成报告。它还适用于轻量级计算,通过Map/MapReduce可以方便地进行大数据计算。对于复杂的任务流或工作流,Openjob也提供了相应的UI设计工具,方便用户进行可视化的流程设计和管理。因此,Openjob是一个功能强大、灵活性高的分布式任务调度框架,适用于各种规模和类型的业务场景。