这几天和朋友聊天时,聊到了他们公司在统一更换分布式调度服务的事情。之前使用的是基于 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 上手操作起来还是比较方便的。其他的特性,屏幕前的你们如果感兴趣可以再探索一下哦。赶快去看看吧~
GitHub - PowerJob/PowerJob: Enterprise job scheduling middleware with distributed computing ability.
写在最后(私活源码)
今天还给大家分享一套基于Springboot+Vue的仓库管理系统源码,在实际项目中可以直接复用。(免费提供,文末自取)
一、系统运行图(设计报告和接口文档)
1、登陆页面
2、物品信息管理
3、设计报告包含接口文档
二、系统搭建视频教程(部分截图)
源码免费领取方式
扫码关注本号,后台回复 仓库
扫码关注本号,后台回复 仓库
持续关注本号,分享更多项目源码
分享一些关于学习Java编程方面的经验
在当今的软件开发领域,Java是一种非常流行和广泛使用的编程语言。无论是大型企业级应用程序还是小型个人项目,Java都是一个强大而可靠的选择。本文将为您提供一份关于如何开发Java项目的指南,帮助您顺利进行项目开发。
1. 确定项目需求:在开始开发之前,首先要明确项目的需求和目标。这包括功能需求、性能需求、用户体验等方面。通过与项目相关人员的沟通和讨论,确保对项目的理解一致。
2. 设计项目架构:在开始编码之前,需要设计项目的架构。这包括确定项目的模块划分、数据库设计、接口定义等。良好的架构设计可以提高代码的可维护性和扩展性。
3. 选择合适的开发工具和框架:Java生态系统中有许多优秀的开发工具和框架可供选择。根据项目需求和团队经验,选择合适的工具和框架可以提高开发效率和代码质量。
4. 编写清晰的代码:编写清晰、可读性强的代码是良好的编程实践。使用有意义的变量名、注释和代码结构,可以提高代码的可维护性和可理解性。
5. 进行单元测试:单元测试是保证代码质量的重要手段。编写单元测试用例,并使用合适的测试框架进行测试,可以及早发现和修复潜在的问题。
6. 版本控制和团队协作:使用版本控制工具(如Git)来管理代码的版本和变更记录。同时,与团队成员保持良好的沟通和协作,确保项目进展顺利。
7. 完善文档和注释:良好的文档和注释可以帮助他人理解和使用您的代码。在开发过程中,及时更新文档和注释,以便后续维护和扩展。
8. 进行集成测试和部署:在开发完成后,进行集成测试,确保各个模块之间的协同工作正常。然后,将项目部署到生产环境,并进行性能测试和安全测试。
9. 持续改进和优化:软件开发是一个不断迭代和改进的过程。通过收集用户反馈和监控系统性能,不断优化和改进项目,以提供更好的用户体验和性能。
Java项目开发需要一系列的步骤和技巧,但最重要的是保持代码质量和团队协作。通过遵循上述指南,您可以更好地规划和管理Java项目开发过程,从而提高项目的成功率和质量。祝您在Java项目开发中取得优秀的成果!