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

 

相关文章:

  • 2021-05-22
  • 2022-12-23
  • 2021-12-03
  • 2021-09-20
  • 2021-12-19
  • 2021-08-14
  • 2022-12-23
猜你喜欢
  • 2021-12-21
  • 2021-09-15
  • 2022-12-23
  • 2021-07-21
  • 2021-07-08
  • 2021-07-05
  • 2021-07-26
相关资源
相似解决方案