前言
首先先需要认识一下powerjob这个理念上较为突破的分布式任务调度框架,下面是截自官网的一些简介:
设计目标
PowerJob 的设计目标为企业级的分布式任务调度平台,即成为公司内部的任务调度中间件。整个公司统一部署调度中心 powerjob-server,旗下所有业务线应用只需要依赖 powerjob-worker 即可接入调度中心获取任务调度与分布式计算能力。
同类产品对比
QuartZ | xxl-job | SchedulerX 2.0 | PowerJob | |
定时类型 | CRON | CRON | CRON、固定频率、固定延迟、OpenAPI | CRON、固定频率、固定延迟、OpenAPI |
任务类型 | 内置Java | 内置Java、GLUE Java、Shell、Python等脚本 | 内置Java、外置Java(FatJar)、Shell、Python等脚本 | 内置Java、外置Java(容器)、Shell、Python等脚本 |
分布式任务 | 无 | 静态分片 | MapReduce 动态分片 | MapReduce 动态分片 |
在线任务治理 | 不支持 | 支持 | 支持 | 支持 |
日志白屏化 | 不支持 | 支持 | 不支持 | 支持 |
调度方式及性能 | 基于数据库锁,有性能瓶颈 | 基于数据库锁,有性能瓶颈 | 不详 | 无锁化设计,性能强劲无上限 |
报警监控 | 无 | 邮件 | 短信 | 邮件,提供接口允许开发者扩展 |
系统依赖 | 关系型数据库(MySQL、Oracle...) | MySQL | 人民币 | 任意 Spring Data Jpa支持的关系型数据库(MySQL、Oracle...) |
DAG 工作流 | 不支持 | 不支持 | 支持 | 支持 |
环境部署
然后就直接开始正片部署吧,首先需要必须理清一些概念,由于主要分为两个角色,server(任务调度中心)可以理解为老板,老板按一个工作表(即为CRON表达式等等)指挥worker(执行器)干活,给我们就是甲方可以提供工作表和指定worker执行等等个性化操作。所以worker和server必须能够双向通信,即这俩种情况,都在公网且有公网ip且能相互访问,在同一局域网下且能够相互访问。
局域网部署
一般测试,开发环境直接把server放到局域网即可,因为worker需要放在本地来调式,局域网里为了方便,直接使用源码或达成jar包部署,主要分三块,只有数据库配置必不可缺
打开配置文件,主要需要配置三个部分,数据库(必不可缺),日志(可选),邮件(可选),钉钉登录(可选)其他的端口配置等配置根据具体情况调整。然后直接启动即可,没有报错即启动成功。
然后是worker的部署(java内嵌版),配置一览:
powerjob:
worker:
# akka 工作端口,可选,默认 27777
akka-port: 27777
# 接入应用名称,用于分组隔离,推荐填写 本 Java 项目名称
app-name: music-service-admin
# 调度服务器地址,IP:Port 或 域名,多值逗号分隔
server-address: 192.168.4.44:7700
# 通讯协议,4.3.0 开始支持 HTTP 和 AKKA 两种协议,官方推荐使用 HTTP 协议(注意 server 和 worker 都要开放相应端口)
protocol: http
# 持久化方式,可选,默认 disk
store-strategy: disk
# 任务返回结果信息的最大长度,超过这个长度的信息会被截断,默认值 8192
max-result-length: 8192
# 单个任务追加的工作流上下文最大长度,超过这个长度的会被直接丢弃,默认值 8192
max-appended-wf-context-length: 8192
# 同时运行的轻量级任务数量上限
max-lightweight-task-num: 1024
# 同时运行的重量级任务数量上限
max-heavy-task-num: 64
主要修改的就是server-address属性,改成server的地址即可(局域网或本机)
demo代码如下:
@Component
@Slf4j
public class HeatProcessor implements BasicProcessor {
@Override
public ProcessResult process(TaskContext context) throws Exception {
UUID uuid = UUID.randomUUID();
log.info("UUID:{}", uuid);
return new ProcessResult(true, "result is " + uuid);
}
}
然后启动,没问题的话,在控制台即可看到机器信息,如果看不见,那就是因为版本问题,worker的版本必须小于server的版本,版本参考:
<!-- 执行器 -->
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-worker-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
调度中心
----------------
<modelVersion>4.0.0</modelVersion>
<artifactId>powerjob-server</artifactId>
<version>5.1.1</version>
<packaging>pom</packaging>
公网部署
公网部署也是相同道理,打成jar包即可,如果还遇到问题,留言即可
主要问题点
1. 网络隔离问题,检查防火墙并ping。
2. 版本问题
前言
首先先需要认识一下powerjob这个理念上较为突破的分布式任务调度框架,下面是截自官网的一些简介:
设计目标
PowerJob 的设计目标为企业级的分布式任务调度平台,即成为公司内部的任务调度中间件。整个公司统一部署调度中心 powerjob-server,旗下所有业务线应用只需要依赖 powerjob-worker 即可接入调度中心获取任务调度与分布式计算能力。
同类产品对比
QuartZ | xxl-job | SchedulerX 2.0 | PowerJob | |
定时类型 | CRON | CRON | CRON、固定频率、固定延迟、OpenAPI | CRON、固定频率、固定延迟、OpenAPI |
任务类型 | 内置Java | 内置Java、GLUE Java、Shell、Python等脚本 | 内置Java、外置Java(FatJar)、Shell、Python等脚本 | 内置Java、外置Java(容器)、Shell、Python等脚本 |
分布式任务 | 无 | 静态分片 | MapReduce 动态分片 | MapReduce 动态分片 |
在线任务治理 | 不支持 | 支持 | 支持 | 支持 |
日志白屏化 | 不支持 | 支持 | 不支持 | 支持 |
调度方式及性能 | 基于数据库锁,有性能瓶颈 | 基于数据库锁,有性能瓶颈 | 不详 | 无锁化设计,性能强劲无上限 |
报警监控 | 无 | 邮件 | 短信 | 邮件,提供接口允许开发者扩展 |
系统依赖 | 关系型数据库(MySQL、Oracle...) | MySQL | 人民币 | 任意 Spring Data Jpa支持的关系型数据库(MySQL、Oracle...) |
DAG 工作流 | 不支持 | 不支持 | 支持 | 支持 |
环境部署
然后就直接开始正片部署吧,首先需要必须理清一些概念,由于主要分为两个角色,server(任务调度中心)可以理解为老板,老板按一个工作表(即为CRON表达式等等)指挥worker(执行器)干活,给我们就是甲方可以提供工作表和指定worker执行等等个性化操作。所以worker和server必须能够双向通信,即这俩种情况,都在公网且有公网ip且能相互访问,在同一局域网下且能够相互访问。
局域网部署
一般测试,开发环境直接把server放到局域网即可,因为worker需要放在本地来调式,局域网里为了方便,直接使用源码或达成jar包部署,主要分三块,只有数据库配置必不可缺
打开配置文件,主要需要配置三个部分,数据库(必不可缺),日志(可选),邮件(可选),钉钉登录(可选)其他的端口配置等配置根据具体情况调整。然后直接启动即可,没有报错即启动成功。
然后是worker的部署(java内嵌版),配置一览:
powerjob:
worker:
# akka 工作端口,可选,默认 27777
akka-port: 27777
# 接入应用名称,用于分组隔离,推荐填写 本 Java 项目名称
app-name: music-service-admin
# 调度服务器地址,IP:Port 或 域名,多值逗号分隔
server-address: 192.168.4.44:7700
# 通讯协议,4.3.0 开始支持 HTTP 和 AKKA 两种协议,官方推荐使用 HTTP 协议(注意 server 和 worker 都要开放相应端口)
protocol: http
# 持久化方式,可选,默认 disk
store-strategy: disk
# 任务返回结果信息的最大长度,超过这个长度的信息会被截断,默认值 8192
max-result-length: 8192
# 单个任务追加的工作流上下文最大长度,超过这个长度的会被直接丢弃,默认值 8192
max-appended-wf-context-length: 8192
# 同时运行的轻量级任务数量上限
max-lightweight-task-num: 1024
# 同时运行的重量级任务数量上限
max-heavy-task-num: 64
主要修改的就是server-address属性,改成server的地址即可(局域网或本机)
demo代码如下:
@Component
@Slf4j
public class HeatProcessor implements BasicProcessor {
@Override
public ProcessResult process(TaskContext context) throws Exception {
UUID uuid = UUID.randomUUID();
log.info("UUID:{}", uuid);
return new ProcessResult(true, "result is " + uuid);
}
}
然后启动,没问题的话,在控制台即可看到机器信息,如果看不见,那就是因为版本问题,worker的版本必须小于server的版本,版本参考:
<!-- 执行器 -->
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-worker-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
调度中心
----------------
<modelVersion>4.0.0</modelVersion>
<artifactId>powerjob-server</artifactId>
<version>5.1.1</version>
<packaging>pom</packaging>
公网部署
公网部署也是相同道理,打成jar包即可,如果还遇到问题,留言即可
主要问题点
1. 网络隔离问题,检查防火墙并ping。
2. 版本问题
前言
首先先需要认识一下powerjob这个理念上较为突破的分布式任务调度框架,下面是截自官网的一些简介:
设计目标
PowerJob 的设计目标为企业级的分布式任务调度平台,即成为公司内部的任务调度中间件。整个公司统一部署调度中心 powerjob-server,旗下所有业务线应用只需要依赖 powerjob-worker 即可接入调度中心获取任务调度与分布式计算能力。
同类产品对比
QuartZ | xxl-job | SchedulerX 2.0 | PowerJob | |
定时类型 | CRON | CRON | CRON、固定频率、固定延迟、OpenAPI | CRON、固定频率、固定延迟、OpenAPI |
任务类型 | 内置Java | 内置Java、GLUE Java、Shell、Python等脚本 | 内置Java、外置Java(FatJar)、Shell、Python等脚本 | 内置Java、外置Java(容器)、Shell、Python等脚本 |
分布式任务 | 无 | 静态分片 | MapReduce 动态分片 | MapReduce 动态分片 |
在线任务治理 | 不支持 | 支持 | 支持 | 支持 |
日志白屏化 | 不支持 | 支持 | 不支持 | 支持 |
调度方式及性能 | 基于数据库锁,有性能瓶颈 | 基于数据库锁,有性能瓶颈 | 不详 | 无锁化设计,性能强劲无上限 |
报警监控 | 无 | 邮件 | 短信 | 邮件,提供接口允许开发者扩展 |
系统依赖 | 关系型数据库(MySQL、Oracle...) | MySQL | 人民币 | 任意 Spring Data Jpa支持的关系型数据库(MySQL、Oracle...) |
DAG 工作流 | 不支持 | 不支持 | 支持 | 支持 |
环境部署
然后就直接开始正片部署吧,首先需要必须理清一些概念,由于主要分为两个角色,server(任务调度中心)可以理解为老板,老板按一个工作表(即为CRON表达式等等)指挥worker(执行器)干活,给我们就是甲方可以提供工作表和指定worker执行等等个性化操作。所以worker和server必须能够双向通信,即这俩种情况,都在公网且有公网ip且能相互访问,在同一局域网下且能够相互访问。
局域网部署
一般测试,开发环境直接把server放到局域网即可,因为worker需要放在本地来调式,局域网里为了方便,直接使用源码或达成jar包部署,主要分三块,只有数据库配置必不可缺
打开配置文件,主要需要配置三个部分,数据库(必不可缺),日志(可选),邮件(可选),钉钉登录(可选)其他的端口配置等配置根据具体情况调整。然后直接启动即可,没有报错即启动成功。
然后是worker的部署(java内嵌版),配置一览:
powerjob:
worker:
# akka 工作端口,可选,默认 27777
akka-port: 27777
# 接入应用名称,用于分组隔离,推荐填写 本 Java 项目名称
app-name: music-service-admin
# 调度服务器地址,IP:Port 或 域名,多值逗号分隔
server-address: 192.168.4.44:7700
# 通讯协议,4.3.0 开始支持 HTTP 和 AKKA 两种协议,官方推荐使用 HTTP 协议(注意 server 和 worker 都要开放相应端口)
protocol: http
# 持久化方式,可选,默认 disk
store-strategy: disk
# 任务返回结果信息的最大长度,超过这个长度的信息会被截断,默认值 8192
max-result-length: 8192
# 单个任务追加的工作流上下文最大长度,超过这个长度的会被直接丢弃,默认值 8192
max-appended-wf-context-length: 8192
# 同时运行的轻量级任务数量上限
max-lightweight-task-num: 1024
# 同时运行的重量级任务数量上限
max-heavy-task-num: 64
主要修改的就是server-address属性,改成server的地址即可(局域网或本机)
demo代码如下:
@Component
@Slf4j
public class HeatProcessor implements BasicProcessor {
@Override
public ProcessResult process(TaskContext context) throws Exception {
UUID uuid = UUID.randomUUID();
log.info("UUID:{}", uuid);
return new ProcessResult(true, "result is " + uuid);
}
}
然后启动,没问题的话,在控制台即可看到机器信息,如果看不见,那就是因为版本问题,worker的版本必须小于server的版本,版本参考:
<!-- 执行器 -->
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-worker-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
调度中心
----------------
<modelVersion>4.0.0</modelVersion>
<artifactId>powerjob-server</artifactId>
<version>5.1.1</version>
<packaging>pom</packaging>
公网部署
公网部署也是相同道理,打成jar包即可,如果还遇到问题,留言即可
主要问题点
1. 网络隔离问题,检查防火墙并ping。
2. 版本问题