xxl-job
文章平均质量分 96
分析xxl-job的源码,体会里面的编程思维
renkeyutian
多年开发、架构,热爱技术
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
XXL-JOB之任务调度全流程分析
我们分析过,客户端在启动时,会找到所有的执行器,并以执行器的名字作为key,缓存在map中,这里的loadJobHandler就是根据名字从缓存中找到对应的执行器。那么又会出现2种情况:如果新名字可以在初始化缓存中找到对应的执行器,就将原来绑定的线程终止掉,然后生成一个新的线程,重新绑定任务id和执行器,后面的任务就都用新的执行器执行了;这样做的好处是,将执行快的任务和执行慢的任务进行隔离,避免慢任务占用线程资源,拖慢执行快的任务。②线程池没法做到隔离。获取任务的信息,任务的地址,重试次数,分片信息等。原创 2023-07-10 15:01:11 · 1542 阅读 · 1 评论
-
XXL-JOB之Client端启动流程分析
如果缓存了这个东西,请求到达客户端之后,就可以快速从里面找到执行器进行执行,因为JobHandler中封装了bean的类型,方法,init方法,destroy方法,这样直接通过反射就可以执行了。所以,这里要做的是,找到当前这个客户端节点的ip,并且从9999这个端口为界,先向上找到一个小于65535的没有使用的端口,如果没有,就向下找,直到找到为止,和ip拼接成一个客户端的地址。通过一个自研的注册中心,来维护服务端和客户端节点变化,直接在注册中心中获取就是最新的地址,可以自动感知变化,不需要重启。原创 2023-07-07 16:44:46 · 1164 阅读 · 1 评论
-
XXL-JOB之服务端启动流程分析
就需要查询xxl-job-registry表了,这个表中存放的是各个执行器节点注册时的信息,然后通过心跳机制,不停的更新时间,所以,如果多长时间以内(3*30s)没有更新时间,就判定这个节点下线了,然后把地址重新汇总之后,存到xxl_job_group表中。如果这个新执行时间点没有超过当前时间+5s的时间点,就将这个任务放到时间轮中,然后重新在新执行时间点的基础上计算下次的执行时间,并更新表,相对于最开始的那次执行时间,存的是下下次的执行时间点。第二件事是开启时间轮,如果时间到了,就取出任务进行调度。原创 2023-07-06 18:32:14 · 750 阅读 · 1 评论
分享