开源界的最强分布式调度框架

2023-11-25 06:03:43 浏览数 (1)

这几天和朋友聊天时,聊到了他们公司在统一更换分布式调度服务的事情。之前使用的是基于 LTS 魔改的分布式调度系统,但是因为这个开源项目太久没有更新,且现在遇到了一些问题,因此公司在推动替换为 PowerJob。这倒是勾起了大叔的好奇心,这次研究了一番,发现 PowerJob 确实是个很棒的框架,在这里推荐给大家。

何为PowerJob

PowerJob 是全新一代分布式调度与计算框架,可以让用户轻松完成作业的调度与繁杂任务的分布式计算。这是一个朝气蓬勃的开源项目,吸取了各家所长,功能更全面,开源维护更活跃。

​整理了一下,主要有以下几个优点值得我来念叨念叨:

  • 提供了 web 界面,方便用户使用
  • 有完善的定时策略:支持 CRON 表达式、固定频率、固定延迟和 API 四种定时调度策略
  • 无锁化设计,性能理论上没有上限
  • 依赖精简,最小依赖仅为关系型数据库,PowerJob 本身就实现了类似 zookeeper 的分布式服务注册与发现功能
  • 支持任意 Spring Data Jpa 支持的关系型数据库,包括但不限于 MySQL、Oracle 等
  • 支持 DAG 工作流

横向对比

市场上可用的调度框架这么多,我们来横向对比一下,看看PowerJob到底好在哪里吧。如图所示:

添加图片注释,不超过 140 字(可选)

使用指南

因为是尝鲜,所以我就用本地部署的方式来展示一下 PowerJob。

本地部署

首先将源码 clone 到本地,用 IDE 打开项目,可以看到项目的结构。

添加图片注释,不超过 140 字(可选)

在本地搭建的 MySQL 上创建一个名为 powerjob-daily 的 schema,然后在 application-daily.properties 配置文件中配置好数据库的用户名和密码。

添加图片注释,不超过 140 字(可选)

最后直接启动 PowerJobServerApplication 就可以啦。

web 管理后台

服务启动成功后,访问http://127.0.0.1:7700/ 即可进入登录页面。初次登录需要注册一个新的应用,如图:

添加图片注释,不超过 140 字(可选)

注册成功后,用刚才的用户名密码登录即可进入后台。

配置一个定时任务

这里我们使用自带的 powerjob-worker-samples 模块来测试一下。

第一步,需要配置该模块的 application.properties 配置文件,将 powerjob.worker.app-name 置为我们刚才注册的应用名称。如图:

添加图片注释,不超过 140 字(可选)

第二步,修改模块中已有的 StandaloneProcessorDemo 类:

@Slf4j @Component public class StandaloneProcessorDemo implements BasicProcessor { @Override public ProcessResult process(TaskContext context) throws Exception { log.info("任务执行啦~,执行参数:{}", context.getJobParams()); return new ProcessResult(true); } }

第三步,进入 web 管理后台,点击左侧的任务管理,点击新建任务,配置任务名称、参数、定时信息以及执行的类,如图所示:

添加图片注释,不超过 140 字(可选)

上面的 cron 配置是让每分钟的第 5 秒执行一次任务。

第四步,启动 SampleApplication,查看日志输出。

添加图片注释,不超过 140 字(可选)

定时任务成功执行了!

总结

好啦,今天就是帮你们探探路。果然 PowerJob 上手操作起来还是比较方便的。其他的特性,屏幕前的你们如果感兴趣可以再探索一下哦。

https://github.com/PowerJob/PowerJob

0 人点赞