企业网站建设ppt,网页游戏排行榜 传奇,开发公司采购部工作流程,网站建设方案封面新一代的定时任务框架——PowerJob
简介
PowerJob是基于java开发的企业级的分布式任务调度平台#xff0c;与xxl-job一样#xff0c;基于web页面实现任务调度配置与记录#xff0c;使用简单#xff0c;上手快速#xff0c;其主要功能特性如下#xff1a; 使用简单…新一代的定时任务框架——PowerJob
简介
PowerJob是基于java开发的企业级的分布式任务调度平台与xxl-job一样基于web页面实现任务调度配置与记录使用简单上手快速其主要功能特性如下 使用简单提供前端Web界面允许开发者可视化地完成调度任务的管理增、删、改、查、任务运行状态监控和运行日志查看等功能。 定时策略完善支持 CRON 表达式、固定频率、固定延迟和API四种定时调度策略。 执行模式丰富支持单机、广播、Map、MapReduce 四种执行模式其中 Map/MapReduce 处理器能使开发者寥寥数行代码便获得集群分布式计算的能力。 工作流支持支持在线配置任务依赖关系DAG以可视化的方式对任务进行编排同时还支持上下游任务间的数据传递以及多种节点类型判断节点 嵌套工作流节点。 执行器支持广泛支持 Spring Bean、内置/外置 Java 类另外可以通过引入官方提供的依赖包一键集成 Shell、Python、HTTP、SQL 等处理器应用范围广。 运维便捷支持在线日志功能执行器产生的日志可以在前端控制台页面实时显示降低 debug 成本极大地提高开发效率。 依赖精简最小仅依赖关系型数据库MySQL/PostgreSQL/Oracle/MS SQLServer… 高可用 高性能调度服务器经过精心设计一改其他调度框架基于数据库锁的策略实现了无锁化调度。部署多个调度服务器可以同时实现高可用和性能的提升支持无限的水平扩展。 故障转移与恢复任务执行失败后可根据配置的重试策略完成重试只要执行器集群有足够的计算节点任务就能顺利完成。
相对于其他定时任务框架具有无锁化设计更强悍的性能支撑我们通过官网的产品对比可以了解详情
项目QuartZxxl-jobSchedulerX 2.0PowerJob定时类型CRONCRONCRON、固定频率、固定延迟、OpenAPICRON、固定频率、固定延迟、OpenAPI任务类型内置Java内置Java、GLUE Java、Shell、Python等脚本内置Java、外置JavaFatJar、Shell、Python等脚本内置Java、外置Java容器、Shell、Python等脚本分布式任务无静态分片MapReduce 动态分片MapReduce 动态分片在线任务治理不支持支持支持支持日志白屏化不支持支持不支持支持调度方式及性能基于数据库锁有性能瓶颈基于数据库锁有性能瓶颈不详无锁化设计性能强劲无上限报警监控无邮件短信邮件提供接口允许开发者扩展系统依赖关系型数据库MySQL、Oracle…MySQL人民币任意 Spring Data Jpa支持的关系型数据库MySQL、Oracle…DAG 工作流不支持不支持支持支持 官网文档http://www.powerjob.tech/ 定时任务类型
与传统的定时任务框架对比powerJob支持更多的定时任务类型 API: 通过客户端提供的api接口触发服务端不会主动调度适用于与业务服务上下连接或只调度一次的业务场景 CRON: 通过cron表达式调度这是多数定时任务框架都支持的 固定频率每隔多少毫秒执行一次。 固定延迟延迟多少毫秒执行一次 工作流配合工作流进行调度服务端不会主动调度当工作流节点执行到该任务时运行。
安装
PowerJob支持两种安装方式一是通过jar包运行一是通过docker安装
docker的安装较为简单且官网有详细说明这里就不单独讲解了大家可参考官方文档 https://www.yuque.com/powerjob/guidence/docker-compose 如何通过jar形式运行的
1、首先我们可以在github上下载源码可以自己编译打包 https://github.com/PowerJob/PowerJob 可以在releases中下载指定版本
2、在IDE中打开后我们powerjob-server就是我们要的服务端源码可以直接编译而powerjob-worker-samples就是springboot下的使用示例
3、在运行编译服务端之前我们需要先创建数据库在指定的数据库下创建即可
CREATE DATABASE IF NOT EXISTS powerjob-daily DEFAULT CHARSET utf8mb44、然后将powerjob-server/powerjob-server-starter下的application-daily.properties配置文件中的数据库配置改成你服务器的
其中daily,pre,product 表示日常、预生产、生产环境下的配置与我们常见的dev, test, prod类似可以根据需要进行调整 其中还有邮箱及其他配置如果有需要也可以调整服务端的参数配置可参考官网文档。
5、我们先来本地运行启动类PowerJobServerApplication一下试试启动成功后访问http://localhost:7700出现登陆页则说明运行成功 6、先注册一个执行器注意这里的应用名称不能顺便取下文在客户端的配置的app-name要与该名称保持一致
7、然后用该执行器名和密码登录
8、如下我们就登录成功了 9、如果需要发布到服务器或虚拟机上运行可以进行编译打包操作
1点击mvn install 将依赖包打包到本地仓库 注意如果这里报错
Please refer to /Library/project/study/java/PowerJob-4.3.2/powerjob-server/powerjob-server-starter/target/surefire-reports for the individual test results.那么可以将maven的健康检查关闭
点击如图所示按钮并且看到test置灰则表示关闭 2执行mvn package打包项目 10、在powerjob-server-starter的target目录下即可看到打包出来的jar将其上传到指定服务器通过java -jar指令即可运行 定时任务创建
1、创建一个springboot项目用于定时任务客户端引入客户端依赖如果是spring或其他java项目引入可参考官网文档 https://www.yuque.com/powerjob/guidence/ygonln dependencygroupIdtech.powerjob/groupIdartifactIdpowerjob-worker-spring-boot-starter/artifactIdversion4.3.2/version
/dependency2、修改配置文件
powerjob:worker:enabled: trueenable-test-mode: false# 数据传输端口默认27777port: 27777# 应用名称与服务端创建的应用账号的名称保持一致app-name: powerjob-agent-test# 服务端地址多个用,隔开server-address: 127.0.0.1:7700# 通讯协议4.3.0之后支持http和akka4.3.0之前仅支持akka官方推荐httpprotocol: http# 任务返回结果信息的最大长度超过该值将被截断max-result-length: 4096# 同时运行的轻量级任务数量上限max-lightweight-task-num: 1024# 同时运行的重量级任务数量上限max-heavy-task-num: 643、启动类上添加注解EnableScheduling
4、通过申明BasicProcessor接口实现process方法来书写一个简单的定时任务示例类注意要声明为bean
/*** author benjamin_5* Description 简单任务执行器* date 2023/5/3*/
Component
public class SimpleJobServer implements BasicProcessor {Overridepublic ProcessResult process(TaskContext taskContext) throws Exception {String jobParams taskContext.getJobParams();System.out.println(参数: jobParams);System.out.println(定时任务执行);return new ProcessResult(true, 定时任务执行成功);}
}5、启动客户端项目运行成功后可以在服务端首页看到机器实例 6、服务端任务管理点击新建任务
其中处理器配置是通过书写处理器的全类路径名来声明的比如我这里是com.example.powerjobdemo.job.SimpleJobServer 7、创建成功后可以在列表看到新建的任务 8、打开客户端控制台也能看到输出的参数和执行打印说明任务执行成功 9、同时我们可以在运行记录中看到执行日志 至此针对powerjob的最简单使用就完成了接下来我们继续来看关于powjob的配置详解
3. 任务配置参数详解
创建任务时我们可以看到如下图所示的配置 定时信息
主要选择定时任务类型支持API, CRON固定频率、固定延迟、工作流、每日固定间隔等几种定时任务类型。
生命周期
这是比其他任务框架更便捷的功能指定了任务的生效周期如果该任务是预定某时间段内执行的可以通过该参数配置
执行配置 执行类型支持单机执行、广播执行、Map执行、MapReduce执行 单机执行表示只需要有一个节点执行任务即可的场景 广播执行表示需要全部节点一同执行的场景比如清除机器日志、各节点数据统计 Map与MapReduce执行都是表示分布式、分批执行用来拆分计算量、耗时较大的任务区别在于Map执行是一种简单的数据处理逻辑特点是将输入数据拆分成多个子块并交给多个分布式节点同时执行以提高数据处理效率适用于简单的数据处理场景 MapReduce执行是一种大数据处理框架处理逻辑是将复杂的数据处理拆分成Map和Reduce阶段进行处理通过数据分组计算后合并来提供数据处理效率更适合复杂的大数据场景
运行时配置 支持HEALTH_FIRST和RANDOM即第一个健康节点和随机用于选择执行处理器节点的策略。 最大实例数用于控制处理器节点数量线程并发度用于控制并发运行时间限制
更多说明可在官方文档中查看 https://www.yuque.com/powerjob/guidence/ysug77