springcloud:新一代分布式定时任务框架——PowerJob

news2024/9/29 5:24:40

0. 引言

之前我们讲解过主流的分布式定时任务框架xxl-job,随着技术的迭代更新,更多的定时任务框架也开始出现,今天我们来看一看新一代的定时任务框架PowerJob

1. PowerJob简介

PowerJob是基于java开发的企业级的分布式任务调度平台,与xxl-job一样,基于web页面实现任务调度配置与记录,使用简单,上手快速,因此迅速得到用户的欢迎。

相对于其他定时任务框架具有无锁化设计,更强悍的性能支撑,我们通过官网的产品对比可以了解详情。

在这里插入图片描述

官网文档:http://www.powerjob.tech/

定时任务类型

与传统的定时任务框架对比,powerJob支持更多的定时任务类型:

  • API: 通过客户端提供的api接口触发,服务端不会主动调度,适用于与业务服务上下连接或只调度一次的业务场景

  • CRON: 通过cron表达式调度,这是多数定时任务框架都支持的

  • 固定频率:每隔多少毫秒执行一次。

  • 固定延迟:延迟多少毫秒执行一次

  • 工作流:配合工作流进行调度,服务端不会主动调度,当工作流节点执行到该任务时运行。

2. PowerJob安装

PowerJob支持两种安装方式,一是通过jar包运行,一是通过docker安装

docker的安装较为简单,且官网有详细说明,这里就不单独讲解了,大家可参考官方文档:

PowerJob通过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 utf8mb4

4、然后将powerjob-server/powerjob-server-starter下的application-daily.properties配置文件中的数据库配置改成你服务器的

其中daily,pre,product 表示日常、预生产、生产环境下的配置,与我们常见的dev, test, prod类似,可以根据需要进行调整

在这里插入图片描述
其中还有邮箱及其他配置,如果有需要也可以调整,服务端的参数配置可参考官网文档:
https://www.yuque.com/powerjob/guidence/bdvp1u

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指令即可运行

在这里插入图片描述

2. 定时任务创建

1、创建一个springboot项目,用于定时任务客户端,引入客户端依赖,如果是spring或其他java项目引入,可参考官网文档:https://www.yuque.com/powerjob/guidence/ygonln

<dependency>
            <groupId>tech.powerjob</groupId>
            <artifactId>powerjob-worker-spring-boot-starter</artifactId>
            <version>4.3.2</version>
</dependency>

2、修改配置文件

powerjob:
  worker:
    enabled: true
    enable-test-mode: false
    # 数据传输端口,默认27777
    port: 27777
    # 应用名称,与服务端创建的应用账号的名称保持一致
    app-name: powerjob-agent-test
    # 服务端地址,多个用,隔开
    server-address: 127.0.0.1:7700
    # 通讯协议,4.3.0之后支持http和akka,4.3.0之前仅支持akka,官方推荐http
    protocol: http
    # 任务返回结果信息的最大长度,超过该值将被截断
    max-result-length: 4096
    # 同时运行的轻量级任务数量上限
    max-lightweight-task-num: 1024
    # 同时运行的重量级任务数量上限
    max-heavy-task-num: 64

3、启动类上添加注解@EnableScheduling

4、通过申明BasicProcessor接口,实现process方法来书写一个简单的定时任务示例类,注意要声明为bean

/**
 * @author benjamin_5
 * @Description 简单任务执行器
 * @date 2023/5/3
 */
@Component
public class SimpleJobServer implements BasicProcessor {

    @Override
    public 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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计原则之单一职责原则、开闭原则、里氏代换原则

文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性&#xff08;Maintainability&#xff09;和可复用性&#xff08;Reusability&#xff09;是两个非常重要的用于衡量软件质量的属性&#xff0c;软件的可维护性是指软…

Ubuntu常用命令总结

目录 1&#xff09;安装包命令及下载包命令 2&#xff09;阅读协议内容 3&#xff09;执行sh文件&#xff1a; 4&#xff09;创建虚拟环境 5&#xff09;激活虚拟环境 6&#xff09;虚拟环境中安装包 7&#xff09;安装上传代码工具 8&#xff09;代码上传 9&#xff09…

传输控制协议(TCP)知识点总结

文章目录 传输控制协议&#xff08;TCP)知识点总结介绍数据包格式TCP连接的建立和关闭三次握手四次挥手一张图展示这些过程 其他知识 传输控制协议&#xff08;TCP)知识点总结 维基百科: 传输控制协议&#xff08;TCP&#xff09;是Internet协议套件中的主要协议之一。它起源于…

五种最危险的新兴网络攻击技术

SANS研究所的网络专家揭示了包括网络罪犯和民族国家行为者在内的网络攻击者正在使用的五种最危险的新兴网络攻击技术。在旧金山举行的RSA网络安全会议上&#xff0c;由SANS研究所的几位分析师组成的讨论组讨论了新兴的网络攻击战术、技术和程序&#xff0c;并提供了如何为企业做…

使用GLSL来实现实时滤镜的效果

1. 先来明确几个概念 1.1 OpenGL OpenGL 全称为 Open Graphics Library&#xff08;开放图形库&#xff09;。 是用于渲染 2D 或 3D 图像的跨语言跨平台的应用程序编程接口&#xff0c;用于CPU控制GPU做图像渲染&#xff0c;是一套API。 提供设计人员一个共同的硬件驱动标准…

虚函数、静态绑定和动态绑定

静态绑定 class Base { public:Base(int data) :ma(data) {}void show() { cout << "Base::show()" << endl; }void show(int) { cout << "Base::show(int)" << endl; }protected:int ma; };class Derive : public Base { public…

Go | 一分钟掌握Go | 10 - 反射

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 反射你以为只在Java中有吗&#xff1f;Go也有反射机制&#xff0c;很多…

【JavaEE】应用层自定义协议及UDP协议

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 本篇文章将为大家介绍应用层中UDP协议~~ 在应用层这里&#xff0c;虽然存在一些现有的协议&#xff08;HTTP&#xff09;&#xff0c;但是也有很多情况&#xff0c;需要程序猿自定制协议&a…

OJ 功能介绍 使用手册

目录 服务器配置 OJ界面展示 用户管理 一、批量导入&#xff08;从方便管理角度建议以 学生姓名 作为 用户名 &#xff09; 二、批量生成临时用户 后期修改成需要的用户名和密码 &#xff08;学生登录后修改密码&#xff09; 三、用户自行注册&#xff08;填写邮箱获取验证码…

Nmap入门到高级【第九章】

预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…

【致敬未来的攻城狮计划】— 连续打卡第二十天:RA2E1_UART —— 串口通信例程

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 3.欲速则不达&#xff0c;今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

Docker consul服务注册与发现

目录 一、服务注册与发现 1、什么是服务注册与发现 2、什么是consul 3、consul提供的一些关键特性 4、容器更新与发现 二、基于nginx与consul构建自动发现即高可用的Docker服务架构 consul服务器部署 1、建立consul 2、查看集群信息 3、通过http获取集群信息 regist…

SpringBoot+vue文件上传下载预览分片上传

学习链接 Blob & File 上传文件 前台 整个过程&#xff0c;就是在使用FormData 添加 上File&#xff08;这个Blob&#xff09;&#xff0c;并且key要和后台的名字对应上在点击上传按钮开始上传之前&#xff0c;使用了URL.createObjectURL(File)创建blobUrl&#xff0c;…

MySQL数据库之库表管理

一、常用的数据类型&#xff1a; 类型含义tinyint(n)1个字节&#xff0c;范围(-128~127)smallint(n)2个字节&#xff0c;范围(-32768~32767)mediumint(n)3个字节&#xff0c;范围(-8388608~8388607)int(n)4个字节(32个比特位)&#xff0c;整数型&#xff0c;范围(-2147483648~…

JavaEE - 网络编程

一、网络编程基础 为什么需要网络编程&#xff1f; 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff0c;实质是通过网络&#xff0c;获取到网络上的一个视频资源。 与本地打开视频文件类似&#xff0c;只是视频文件这个资源的来源是网络。 相比本…

KALI入门到高级【第五章】

预计更新第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 特…

模糊PID(模糊规则表)

模糊PID的模糊化相关内容,请参看下面的博客文章: PLC模糊控制模糊PID(梯形图实现+算法分析)_RXXW_Dor的博客-CSDN博客博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_…

后端程序员的前端必备【Vue】 - 05 class与style绑定、表单输入绑定、Vue生命周期

class与style绑定、表单输入绑定、Vue生命周期 1 class与style绑定1.1 绑定class1.2 绑定style1.3 练习 2 表单输入绑定3 Vue生命周期3.1 vue生命周期3.2 组件的生命周期钩子 1 class与style绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attri…

【操作系统】操作系统内核

图灵机 当系统中有一个CPU的时候 &#xff0c;MR就是它的状态 当系统中有n个CPU的时候&#xff0c;MR1,MR2…MRn 是它的状态 IRQ和NMI是低电平有效信号 NMI不可屏蔽中断 6502的CPU一共40个引脚 eflags寄存器里的 IF 表示 interrupt enable 1表示可以响应中断&#xff0c;0表示…

破解马赛克有多「容易」?

刷短视频时&#xff0c;估计大家都看过下面这类视频&#xff0c;各家营销号争相曝光「一分钟解码苹果笔刷背后内容」的秘密。换汤不换药&#xff0c;自媒体们戏称其为「破解马赛克」&#xff0c;殊不知让多少不明真相的用户建立起了错误的认知&#xff0c;也让苹果笔刷第 10086…