zoukankan      html  css  js  c++  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 和邮件服务器地址等信息

    配置log4j.xml中日志的路径

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

    执行器配置

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

    <dependency>       <groupId>com.xuxueli</groupId>        <artifactId>xxl-job-core</artifactId>       <version>1.9.0</version></dependency>

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

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

     

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

     

    @Service@JobHandler(value = "demoHandler")public class DemoHandler extends IJobHandler {    @Override    public ReturnT<String> execute(String s) throws Exception {        XxlJobLogger.log("日志记录数据...");        //do something        return ReturnT.SUCCESS;    }}

    新增任务

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

    新增执行器

    新增任务

    新增任务的时候需要选择上一步创建的执行器,选择运行模式,如果是 JavaBean 方式就配置 JobHandler,或者选择 Python 模式等,然后填上必要的一些信息,如Cron以及一些参数 具体配置可以参考

    任务详解[4] 这里的配置项比较多

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

    小结

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

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

     

    Java 极客技术公众号,是由一群热爱 Java 开发的技术人组建成立,专注分享原创、高质量的 Java 文章。如果您觉得我们的文章还不错,请帮忙赞赏、在看、转发支持,鼓励我们分享出更好的文章。

     关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料。

  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/justdojava/p/11211551.html
Copyright © 2011-2022 走看看