• xxl-job 任务管理


    xxl-job(https://github.com/xuxueli/xxl-job) 系统的具体设计,可以参考官方文档,非常详细,这里只说一下大概的流程。 

    1. 应用端通过继承类或者注解的方式,来标示一个类或者一个方法是一个job。 
    2. 在应用启动的时候,会做3个事情:
         1. 扫描上面第一步的类或者方法,放入内存。 
         2. 启动一个内嵌的基于netty的http服务端。
         3. 将内嵌的服务端地址注册到调度中心。 
    3. 调度中心取获分布式锁(mysql 的for update,保证HA状态下的调度中心只有一个能执行),拿到锁之后扫描需要执行的job,计算下一次要执行的时间, 放入到一个ring,类似于一个时间轮,之后会有一个单独的线程从ring中拿到当前要执行的job进行触发执行,触发方式是通过一定的负载策略,调用上面第二步内嵌http服务器的地址。
    4. 应用内的http服务端接收到请求,会放入到内存队列中,之后会有单独一个线程从队列中拿到要执行的job进行执行。 
     
    我的注解版xxl-job: https://github.com/zhaoyb/xxl-job
  • 相关阅读:
    java线程上
    java常用类
    java面向对象4
    java 面向对象三
    java面向对象下
    java面向对象
    java基础下
    Java之Stream流
    JAVA泛型
    英语
  • 原文地址:https://www.cnblogs.com/beyondbit/p/13354557.html
Copyright © 2020-2023  润新知