只会用xxl-job?更强大的新一代分布式任务调度框架来了!
The following article is from 开源小分队 Author 开源大叔
何为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,抱团取暖,一起牛逼。