ToB企服应用市场:ToB评测及商务社交产业平台

标题: 太强了!全新一代分布式任务调度与计算框架! [打印本页]

作者: 知者何南    时间: 2024-3-21 03:51
标题: 太强了!全新一代分布式任务调度与计算框架!
大家好,我是 Java陈序员。
我们在工作开发中,离不开任务调度。通过指定的间隔时间执行各类操作,来完成无需用户操作的任务。
目前市场上,有一些编程语言本身自带的定时任务工具,如 Java 中 Timer。也有一些比较成熟的定时任务框架,如 Quartz。现在大部分系统都是使用分布式,分布式的任务调度工具也是十分流行,如 xxl-job。
今天,给大家介绍一个全新一代分布式调度与计算框架!
关注微信公众号:【Java陈序员】,回复 AI ,获取AI副业赚钱资讯。
项目介绍

PowerJob(原 OhMyScheduler) —— 全新一代分布式调度与计算框架,能让您轻松完成作业的调度与繁杂任务的分布式计算。

主要特性
产品对比

快速开始

0、基本概念

在开始使用前,需要先了解任务调度中相关的组件。
分组概念
appName:应用名称,建议与用户实际接入 PowerJob 的应用名称保持一致,用于业务分组与隔离。一个 appName 等于一个业务集群,也就是实际的一个 Java 项目。
核心概念
扩展概念
定时任务类型
备注:固定延迟和固定频率任务统称秒级任务,这两种任务无法被停止,只有任务被关闭或删除时才能真正停止任务。
1、初始化项目

1、克隆代码
  1. git clone https://github.com/PowerJob/PowerJob.git
复制代码
2、将项目导入到IDEA中,代码目录结构如下:
  1. ├── LICENSE
  2. ├── powerjob-client // powerjob-client,普通Jar包,提供 OpenAPI
  3. ├── powerjob-common // 各组件的公共依赖,开发者无需感知
  4. ├── powerjob-remote // 内部通讯层框架,开发者无需感知
  5. ├── powerjob-server // powerjob-server,基于SpringBoot实现的调度服务器
  6. ├── powerjob-worker // powerjob-worker, 普通Jar包,接入powerjob-server的应用需要依赖该Jar包
  7. ├── powerjob-worker-agent // powerjob-agent,可执行Jar文件,可直接接入powerjob-server的代理应用
  8. ├── powerjob-worker-samples // 教程项目,包含了各种Java处理器的编写样例
  9. ├── powerjob-worker-spring-boot-starter // powerjob-worker 的 spring-boot-starter ,spring boot 应用可以通用引入该依赖一键接入 powerjob-server
  10. ├── powerjob-official-processors // 官方处理器,包含一系列常用的 Processor,依赖该 jar 包即可使用
  11. ├── others
  12. └── pom.xml
复制代码
2、启动调度服务器

1、创建数据库
  1. CREATE DATABASE IF NOT EXISTS `powerjob-daily` DEFAULT CHARSET utf8mb4
复制代码
2、修改配置文件中的数据库配置信息
需要修改的地方(路径: PowerJob/powerjob-server/powerjob-server-starter/src/main/resources/application-daily.properties)
  1. spring.datasource.core.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.core.jdbc-url=jdbc:mysql://localhost:3306/powerjob-daily?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
  3. spring.datasource.core.username=root
  4. spring.datasource.core.password=root
  5. spring.datasource.core.maximum-pool-size=20
  6. spring.datasource.core.minimum-idle=5
复制代码
tips:如果没有数据库环境,可以使用H2数据库,配置参考如下:
  1. spring.datasource.core.driver-class-name=org.h2.Driver
  2. spring.datasource.core.jdbc-url=jdbc:h2:file:~/h2/powerjob-daily-test
  3. spring.datasource.core.username=sa
  4. spring.datasource.core.password=
复制代码
3、启动调度服务器
启动类:tech.powerjob.server.PowerJobServerApplication
4、启动成功后,访问:http://localhost:7700

5、注册执行应用

6、注册成功后即可开始登录使用

3、编写示例代码

1、修改 powerjob-worker-samples 的 application.properties,将 powerjob.worker.app-name 改为刚刚在控制台注册的名称
  1. server.port=8081
  2. spring.jpa.open-in-view=false
  3. ########### powerjob-worker 配置 ###########
  4. # akka 工作端口,可选,默认 27777
  5. powerjob.worker.akka-port=27777
  6. # 接入应用名称,用于分组隔离,推荐填写 本 Java 项目名称
  7. powerjob.worker.app-name=test
  8. # 调度服务器地址,IP:Port 或 域名,多值逗号分隔
  9. powerjob.worker.server-address=127.0.0.1:7700
  10. # 持久化方式,可选,默认 disk
  11. powerjob.worker.store-strategy=disk
  12. # 任务返回结果信息的最大长度,超过这个长度的信息会被截断,默认 8192
  13. powerjob.worker.max-result-length=4096
  14. # 单个任务追加的工作流上下文最大长度,超过这个长度的会被直接丢弃,默认 8192
  15. powerjob.worker.max-appended-wf-context-length=4096
复制代码
2、编写自己的处理器类,继承你想要使用的处理器
目前有如下处理器类型:
  1. @Component
  2. @Slf4j
  3. public class Test implements BasicProcessor {
  4.     @Override
  5.     public ProcessResult process(TaskContext context) throws Exception {
  6.         // PowerJob 在线日志功能,使用该 Logger 打印的日志可以直接在 PowerJob 控制台查看
  7.         OmsLogger omsLogger = context.getOmsLogger();
  8.         omsLogger.info("StandaloneProcessorDemo start process,context is {}.", context);
  9.         return new ProcessResult(true, "process successfully~");
  10.     }
  11. }
复制代码
3、启动示例程序
启动类:ech.powerjob.samples.SampleApplication
4、配置运行任务

调度服务器与示例工程都启动完毕后,再次前往Web页面(http://localhost:7700/),进行任务的配置与运行。
1、在系统首页,可以看到连接到调度服务器的执行器信息

2、点击任务管理 -> 新建任务(右上角),开始创建任务。

3、完成任务创建后,即可在控制台看到刚才创建的任务

启用任务后即可开始调度任务,如果觉得等待调度太过于漫长,可以直接点击运行按钮,立即运行本任务。
4、任务示例菜单,可以查看任务的运行状态和在线日志

在任务实例中,可以查看任务的详情、日志,或者进行重试、停止活动。
最后

推荐的开源项目已经收录到 GitHub 项目,欢迎 Star:
  1. https://github.com/chenyl8848/great-open-source-project
复制代码
或者访问网站,进行在线浏览:
  1. https://chencoding.top:8090/#/
复制代码
大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4