面试应该知道的任务调度平台

简介: Java极客技术

背景

日常开发中,我们难免会遇到需要处理一些定时任务,而且这些定时任务还需要灵活的调度,并且在异常的情况下需要做的重试或者报警。这些任务我们希望能灵活配置,并且能及时生效,不需要经常发版本更新代码。所以我们希望能有一个这样的平台,能满足我们的这些需求。感谢开源社区,已经有了很好的解决方案,就是 XXL-JOB。 本文介绍的版本是基于 XXL-JOB 的1.9.0版本,新版本调度中心 Admin 已经切换为 SpringBoot 项目了。

介绍

XXL-JOB[1]是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。中文文档地址[2]

XXL-JOB由两个模块组成分为调度中心和执行器,作者许雪里的开源项目,感谢大佬。

调度中心搭建

release[3]拉取最新代码

根据自己的需要配置 xxl-job-admin 中 xxl-job-admin.properties 文件中的数据源信息以及账号密码,以及 accessToken 和邮件服务器地址等信息

60.jpg

配置log4j.xml中日志的路径

61.jpg

将xxl-job-admin打包成war包,部署到tomcat中即可

执行器配置

新建 Springboot 项目,pom.xml中引入 xxl-job 的核心库

62.png配置文件中配置调度中心的地址和一些具体参数



63.jpg

编写 jobHandler ,继承 JobHandler 实现内部 execute 方法,具体的业务逻辑就在这个方法里面实现。这种方式是通过Java代码来执行定时任务的,除了 JavaBean 方式还支持 Python,nodeJs,Shell 等方式。


我最喜欢的是 Python 方式,因为 Python 在处理简单的定时任务的时候还是比较得心应手的,而且很快速,但是稍微复杂一点的就不方便了,而且 Python 可以直接 WebIDE 里面直接粘贴代码,实现功能,就不用发版本了,但是具体的需要看具体的业务。


64.png

新增任务

配置好调度中心并且也成功启动了执行器后,登录调度中心新增执行器然后就可以配置任务了

新增执行器


65.jpg


新增任务66.png

置完成后可以如下,可以手动执行,暂停,查看日志,如果是 Python 模式可以直接点击GLUE按钮进去填写代码,相关的代码也有版本回溯,方便回滚,十分方便。

67.jpg

小结

整个 XXL—JOB 都是支持分布式部署的,而且执行器也可以配置多个,具体的路由策略也是可以配置的,十分方便。新版本的调度中心 Admin 已经升级为 SpringBoot 项目了,而且项目本身就携带了很多类型的执行器可以使用,基本上实现了开箱即用,只要添加自己的业务逻辑就可以了。

不过整个 XXL-JOB 有个缺点就是没有权限管理,执行器没有实现权限控制,这个目前作者没有实现,应该在后续的版本中会增加,这个在作者的 todo list 里面,但是具体什么时候实现就不知道了。目前我们这边项目已经在线上跑了差不多一年了,还是比较稳定的,而且只是组内使用,没有执行器权限的问题,但是如果要是上升到公司级别,让各个组用的话权限还是一个重要的点。


相关文章
|
8月前
|
Java Linux 程序员
Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)
Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)
|
12月前
|
运维 Kubernetes Cloud Native
腾讯云私有云平台运维面试
根据会议将面试问题进行总结,很多问题感觉当时没回答好,这是为啥呢?应该还是不熟练吧,或者不善于表达。将次经历分享出来,大家多练练。
441 0
|
2月前
|
机器学习/深度学习 数据挖掘 开发工具
2024年最全0基础学python开发工具及学习平台推荐_python平台a,面试阿里巴巴客服
2024年最全0基础学python开发工具及学习平台推荐_python平台a,面试阿里巴巴客服
2024年最全0基础学python开发工具及学习平台推荐_python平台a,面试阿里巴巴客服
|
2月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_65 用户购买平台
「SQL面试题库」 No_65 用户购买平台
|
人工智能 算法
【每日算法Day 102】美团 AI 平台算法工程师面试编程题
【每日算法Day 102】美团 AI 平台算法工程师面试编程题
116 0
|
机器学习/深度学习 人工智能 自然语言处理
【每日算法Day 102】美团 AI 平台算法工程师面试编程题
牛牛有 n 堆石子堆,第 i 堆一共有 a[i] 个石子。 牛牛可以对任意一堆石子数量大于 1 的石子堆进行分裂操作,分裂成两堆新的石子数量都大于等于 1 的石子堆。 现在牛牛需要通过分裂得到 m 堆石子,他想知道这 m 堆石子的最小值最大可以是多少?
179 0
【每日算法Day 102】美团 AI 平台算法工程师面试编程题
|
Oracle 安全 前端开发
java面试:谈谈你对java平台的理解?
java面试:谈谈你对java平台的理解?
java面试:谈谈你对java平台的理解?
|
Java 编译器 Linux
面试官:谈谈你对Java平台的理解?
面试官:谈谈你对Java平台的理解?
面试官:谈谈你对Java平台的理解?
|
Java 程序员 编译器
从 Java 的平台无关性引入的一系列面试题
在 Java 面试中,有一条很常见的询问路线:从对 Java 的认识,到谈 Java 的平台无关性,到 Java 中的反射机制,再到类加载机制,继而深入到双亲委派机制等。本文将根据这条路线,给出一份可供参考的回答,如有错误万望指正。(推荐读者们在回答的时候结合自己的认识和项目经历作答)
|
Apache PHP Windows
PHP面试题:windows平台, Apache Http Server启动失败, 排错思路是什么?
PHP面试题:windows平台, Apache Http Server启动失败, 排错思路是什么?
117 0