引言
今天跟大家分享一个能够在工业物联网系统内实现接入设备的定时任务调度框架——PowerJob,此框架主要功能如下:
1. 使用简单:提供前端Web界面,允许开发者可视化地完成调度任务的管理(增、删、改、查)、任务运行状态监控和运行日志查看等功能。
2. 定时策略完善:支持 CRON 表达式、固定频率、固定延迟和API四种定时调度策略。
3. 执行模式丰富:支持单机、广播、Map、MapReduce 四种执行模式,其中 Map/MapReduce 处理器能使开发者寥寥数行代码便获得集群分布式计算的能力。
4. 工作流支持:支持在线配置任务依赖关系(DAG),以可视化的方式对任务进行编排,同时还支持上下游任务间的数据传递,以及多种节点类型(判断节点 & 嵌套工作流节点)。
5. 执行器支持广泛:支持 Spring Bean、内置/外置 Java 类,另外可以通过引入官方提供的依赖包,一键集成 Shell、Python、HTTP、SQL 等处理器,应用范围广。
6. 运维便捷:支持在线日志功能,执行器产生的日志可以在前端控制台页面实时显示,降低 debug 成本,极大地提高开发效率。
7. 依赖精简:最小仅依赖关系型数据库(MySQL/PostgreSQL/Oracle/MS SQLServer...)。
8. 高可用 & 高性能:调度服务器经过精心设计,一改其他调度框架基于数据库锁的策略,实现了无锁化调度。部署多个调度服务器可以同时实现高可用和性能的提升(支持无限的水平扩展)。
9. 故障转移与恢复:任务执行失败后,可根据配置的重试策略完成重试,只要执行器集群有足够的计算节点,任务就能顺利完成。
同类型产品对比
快速入门
1. 初始化项目
可通过git拉取官方demo工程进行学习,地址:git clone https://github.com/PowerJob/PowerJob.git。
2. 导入idea
3. 基础架构
如上图所示,拉取工程之后其中powerjob-server是调度服务器,提供任务调度以及web端管理页面功能,powerjob-worker-samples,为官方已经编写好的实例程序不做过多赘述,其中powerjob-work是我们需要编写辨析任务逻辑的模块。
4. 修改配置
在启动powerjob-server是需要修改其中application.properties文件。
5. 调度器,执行器,处理器
修改完配置文件后,便可以在powerjob-work模块中编写代码,整个框架,主要是分为调度器(server),执行器(work),处理器(processor),其中我们所需要执行的任务逻辑代码便是在执行器work工程中,创建类并继承BasicProcessor ,BroadcastProcessor ,MapReduceProcessor ,三种处理器各有不同特性,分别为:
(1)单机处理器:单机执行的策略下,server 会在所有可用 worker 中选取健康度最佳的机器进行执行。
(2)广播处理器:广播执行的策略下,所有机器都会被调度执行该任务。为了便于资源的准备和释放,广播处理器在`BasicProcessor` 的基础上额外增加了 `preProcess` 和 `postProcess` 方法,分别在整个集群开始之前/结束之后选一台机器执行相关方法。
(3) 并行处理器:MapReduce 是最复杂也是最强大的一种执行器,它允许开发者完成任务的拆分,将子任务派发到集群中其他Worker 执行,是执行大批量处理任务的不二之选。
本文为演示作用,采用单机处理器BasicProcessor
编写完处理器逻辑代码之后便可以,启动work工程模块,并且登录web任务管理页面创建任务,并选定处理器执行任务。
6.web管理页面
新建任务
可按照下图配置任务信息
任务运行
前往任务实例页面便可以查看任务详细运行情况