
elasticjob
文章平均质量分 77
snail-jie
问题驱动,慢慢沉淀
展开
-
跟着Quartz源码分析调度原理
基本概念Quartz任务调度的核心元素:Scheduler(任务调度器)、Trigger(触发器)、Job(任务)1.1 Trigger:定义调度时间的元素,即按照什么时间规则去执行任务1.2 Job:标识被调度的任务Quartz内部提供的调度类是QuartzScheduler2.1 QuartzScheduler委托QuartzSchedulerThread去实时调度2.2 调度完需要去执行job时,交给ThreadPool去执行JobQuartzScheduler分析QuartzSc原创 2022-01-08 21:00:19 · 977 阅读 · 0 评论 -
探索@Scheduled定时任务注解的实现机制
背景 在《定时任务迁移到SnailJob的优化历程》文章中有针对基于xml文件配置定时任务迁移到SnailJob优化。但在今天对接另外一个系统,针对@Scheduled注解的定时任务迁移发现之前那种处理方式不可取,那@Scheduled运行机制到底是怎样的?注册定时任务@EnableScheduling作为入口驱动加载定时任务,核心关注ScheduledAnnotationBeanPostProcessorScheduledAnnotationBeanPostPr原创 2021-12-17 17:15:13 · 1115 阅读 · 0 评论 -
定时任务迁移到SnailJob的优化历程
前言今天同事在对接我基于elasticJob二次开发的snailJob时,说需要把每个定时任务都要实现SimpleJob接口,感觉很麻烦,希望直接指定其方法,减少对接的成本Quart初始化总结:2.1 初始化scheduler2.2 将Job和触发器添加到scheduler中(1)Job对应于scheduler的jobDetail属性(2)触发器对应于scheduler的trigger属性Spring如何集成QuartSpring集成Quart入口:<bean name="s原创 2021-11-05 17:45:34 · 1600 阅读 · 0 评论 -
elasticjob选主分析
选主分析选主入口调用栈1.1 通过调用栈分析,发现elasticjob为每个任务都创建一个JobSchuduler作业调度对象,而在JobScheduler对象的初始化会为每个Job选举一个主节点选主的作用:分配作业分片项重点分析如何选主:JobNodeStorage#executeInLeader3.1 通过上图可知,ejob通过curator-recipes的LeaderLatch进行选主(下面会详细分析)基于zookeeper的分布式锁实现选举作业主节点通过在Zoo原创 2021-05-30 21:39:30 · 985 阅读 · 2 评论 -
elastic-job调度任务分析
导语分析ejob怎样扩展quartz根据上图发现,在创建JobDetail时指定了LiteJob,并注入了其jobExecutor属性quartz启用调度,最终会触发调用ElasticJobExecutor#execute方法通过配置quartz配置SimpleThreadPool的线程数为1(1)每个定时任务分配一个单线程池ElasticJobExecutor#execute执行作业任务(重点)从缓存中加载作业配置(从zk中加载)检查是否需要加载可重新加载的项目2.1 可重原创 2021-05-29 15:37:47 · 1081 阅读 · 0 评论 -
elasticjob扩展机制-SPI解析
ElasticJobServiceLoader#registerTypedService解析(重点)方法整体概括图SPI解析ServiceLoader#load 初始化工作获取线程下文类加载器,并将值传递给ServiceLoader.load(service, cl)方法下面是ServiceLoader.load(service, cl)调用栈概括图2.1 构造方法重新赋值service和loader属性2.2 reload方法:清除缓存providers以及重新初始化lookupI原创 2021-05-29 15:31:09 · 1101 阅读 · 0 评论 -
elastic-job注册定时任务引导类
导语接上一篇文章对elastic-job初始,本篇逐步分析里面逻辑,由浅入深反复分析本篇调式代码入口是以elasticjob-example-lite-springboot为案例进行分析的ScheduleJobBootstrap初始化分析获取作业监听器遍历作业配置jobListenerTypes,并通过ElasticJobListenerFactory#createListener创建作业监听器ElasticJobListener–> 案例里没有相关配置,返回为空初始化Set原创 2021-05-13 23:01:11 · 1090 阅读 · 0 评论 -
elastic-job初识
导语本人想基于elasticJob做一个简版(去除里面的zk以及一些用不到的功能),服务于现有的一些老项目。目的就是基于现有的基础设置,不想额外搭建zk等,顺便可以更深入学些elasticjob正文通过导入starter包引入Spring Boot的扩展机制:Spring Factories(SPI)1.1 Spring在META-INF/spring.factories文件中配置接口的实现类名称1.2 SpringFactoriesLoader实现了检索META-INF/spring.fac原创 2021-05-11 15:45:27 · 470 阅读 · 1 评论