查看原文
其他

只会用xxl-job?更强大的新一代分布式任务调度框架来了!

macrozheng 2023-12-17

The following article is from 开源小分队 Author 开源大叔

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

何为PowerJob

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

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

  • 提供了 web 界面,方便用户使用

  • 有完善的定时策略:支持 CRON 表达式、固定频率、固定延迟和 API 四种定时调度策略

  • 无锁化设计,性能理论上没有上限

  • 依赖精简,最小依赖仅为关系型数据库,PowerJob 本身就实现了类似 zookeeper 的分布式服务注册与发现功能

  • 支持任意 Spring Data Jpa 支持的关系型数据库,包括但不限于 MySQL、Oracle 等

  • 支持 DAG 工作流

横向对比

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

使用指南

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

本地部署

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

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

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

web 管理后台

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

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

配置一个定时任务

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

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

第二步,修改模块中已有的 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 管理后台,点击左侧的任务管理,点击新建任务,配置任务名称、参数、定时信息以及执行的类,如图所示:

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

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

定时任务成功执行了!

总结

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

项目地址

https://github.com/PowerJob/PowerJob


微信8.0将好友放开到了一万,小伙伴可以加我大号了,先到先得,再满就真没了

扫描下方二维码即可加我微信啦,2022,抱团取暖,一起牛逼。

推荐阅读


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存