1.10. xxl-job 分布式任务调度
2.技术人生阅读源码——Quartz源码分析之任务的车间出调度和执行
3.å·¥åç产管çç³»ç»
4.一文读懂,硬核 Apache DolphinScheduler3.0 源码解析
10. xxl-job 分布式任务调度
xxl-job
xxl-job是调度度系一个分布式任务调度平台,具备迅速开发、系统简单学习、源码轻量级、找车易扩展等核心设计目标。间调文章播客源码它已开放源代码,统源被多家公司纳入线上产品线,码找可开箱即用。车间出
使用xxl-job实现特定时间完成特定任务,调度度系例如每天早上9:定时发送营销短信给每个客户。系统
访问官网xuxueli.com/xxl-job获取详细信息。源码
xxl-job安装与配置
下载源码、找车初始化数据库脚本,间调执行脚本生成xxl_job库。统源
修改配置文件,包括application.properties和logback.xml。
Maven编译打包,整站源码生成xxl-job-admin-2.4.0.jar。
运行jar包,访问地址为localhost:/xxl-job,并使用默认账号admin/登录。
集成xxl-job到SpringBoot
在pom.xml中添加依赖、在application.properties中配置相关参数,注入XxlJobSpringExecutor。
编写具体的任务执行方法SampleXxlJob。
执行器、任务管理与调度日志
使用Cron表达式设置任务执行频率,JobHandler与代码方法对应。
记录调度日志,使用SpringBoot打印。
总结
xxl-job是一个功能强大、易于使用的分布式任务调度框架,适用于各种任务调度场景。提供任务调度、网页源码下载执行监控、失败重试等功能,简化开发和管理,提升系统可靠性和稳定性。
完整代码在仓库的sourcecode/spring-cloud-demo目录下,推荐访问gitee或github。
关注微信公众号“小虎哥的技术博客”,一起成为更优秀的程序员。
技术人生阅读源码——Quartz源码分析之任务的调度和执行
Quartz源码分析:任务调度与执行剖析
Quartz的调度器实例化时启动了调度线程QuartzSchedulerThread,它负责触发到达指定时间的任务。该线程通过`run`方法实现调度流程,包含三个主要阶段:获取到达触发时间的triggers、触发triggers、执行triggers对应的jobs。
获取到达触发时间的triggers阶段,通过`JobStore`接口的`acquireNextTriggers`方法获取,由`RAMJobStore`实现具体逻辑。下载网页源码触发triggers阶段,调用`triggersFired`方法通知`JobStore`触发triggers,处理包括更新trigger状态与保存触发过程相关数据等操作。执行triggers对应jobs阶段,真正执行job任务,先构造job执行环境,然后在子线程中执行job。
job执行环境通过`JobRunShell`提供,确保安全执行job,捕获异常,并在任务完成后根据`completion code`更新trigger。job执行环境包含job对象、trigger对象、触发时间、上一次触发时间与下一次触发时间等数据。Quartz通过线程池提供多线程服务,使用`SimpleThreadPool`实例化`WorkerThread`来执行job任务,dnf源码最终调用`Job`的`execute`方法实现业务逻辑。
综上所述,Quartz通过精心设计的线程调度与执行流程,确保了任务的高效与稳定执行,展示了其强大的任务管理能力。
å·¥åç产管çç³»ç»
ä¸ãMESç³»ç»å ¨ç§°Manufacturing Execution Systemså³å¶é æ§è¡ç³»ç»ï¼
åè¥è¿æ¯è½¯ä»¶ çæææ
äºãMESç³»ç»å®ä¹
MESæ¯å¨å ¬å¸çæ´ä¸ªèµæºæå ¶ç»è¥ç®æ è¿è¡ç®¡çæ¶ï¼ä¸ºå ¬å¸æä¾å®ç°æ§è¡ç®æ çæ§è¡æ段ï¼éè¿å®æ¶æ°æ®åºè¿æ¥åºæ¬ä¿¡æ¯ç³»ç»çç论æ°æ®åå·¥åçå®é æ°æ®ï¼å¹¶æä¾ä¸å¡è®¡åç³»ç»ä¸å¶é æ§å¶ç³»ç»ä¹é´çéä¿¡åè½ãMESä¸åªæ¯å·¥åçåä¸ä¿¡æ¯ç³»ç»ï¼èæ¯æ¨ªåä¹é´ã纵åä¹é´ãç³»ç»ä¹é´éæçç³»ç»ï¼å³æè°ç»è¥ç³»ç»ï¼å¯¹äºSCPãERPãCRMãæ°æ®ä»åºçè¿å¹´è¢«å ³æ³¨çåç§ä¼ä¸ä¿¡æ¯ç³»ç»æ¥è¯´ï¼åªè¦å å«å·¥åè¿ä¸ªå¯¹è±¡ï¼å°±ç¦»ä¸äºMESãå½ç»èµ·æ¥ï¼MESå¯ä»¥æ¦æ¬ä¸ºä¸ä¸ªå®æ¨ââå¶é ææ ·æ§è¡ï¼ä¸¤ä¸ªæ ¸å¿æ°æ®åºââå®æ¶æ°æ®åºãå ³ç³»æ°æ®åºï¼ä¸¤ä¸ªéä¿¡æ¥å£ââä¸æ§å¶å±æ¥å£åä¸ä¸å¡è®¡åå±æ¥å£ï¼å个éç¹åè½ââç产管çãå·¥èºç®¡çãè¿ç¨ç®¡çåè´¨é管ççã
ä¸ãMESç³»ç»ç¹å¾
1ãMESå¨æ´ä¸ªä¼ä¸ä¿¡æ¯éæç³»ç»ä¸æ¿ä¸å¯ä¸ï¼æ¯ç产活å¨ä¸ç®¡çæ´»å¨ä¿¡æ¯æ²éçæ¡¥æ¢ãMES对ä¼ä¸ç产计åè¿è¡âå计åâï¼âæ令âç产设å¤âååâæâåæ¥âå¨ä½ï¼å¯¹äº§åç产è¿ç¨è¿è¡åæ¶çååºï¼ä½¿ç¨å½åç¡®çæ°æ®å¯¹ç产è¿ç¨è¿è¡åæ¶è°æ´ãæ´æ¹æå¹²é¢çå¤çã
2ãMESéç¨ååç´æ¥çé讯ï¼å¨æ´ä¸ªä¼ä¸ç产åä¾éé¾ä¸ï¼å³åç产è¿ç¨äººåä¼ è¾¾ä¼ä¸çææ(计å)ï¼ååæå ³çé¨é¨æä¾äº§åå¶é è¿ç¨ç¶æçä¿¡æ¯åé¦ãMESééä»æ¥å订货å°å¶ææç»äº§åå ¨è¿ç¨çåç§æ°æ®åç¶æä¿¡æ¯ï¼ç®çå¨äºä¼å管çæ´»å¨ãå®å¼ºè°æ¯å½åè§è§ï¼å³ç²¾ç¡®çå®æ¶æ°æ®ã
3ãMESæ¯å´ç»ä¼ä¸ç产è¿ä¸ä¸ºä¼ä¸ç´æ¥å¸¦æ¥æççä»·å¼å¢å¼è¿ç¨è¿è¡çï¼MES强è°æ§å¶ååè°ã
åè¥è¿æ¯è½¯ä»¶ çæææ
åãMESç³»ç»ä½ç¨
ä½ä¸ºå è¿è½¦é´ç®¡çææ¯çè½½ä½ï¼çåæ®å¶é ä¼ä¸ç产è¿ç¨å¶é æ§è¡ç³»ç»ï¼MESï¼å¨å¸®å©å¶é ä¼ä¸å®ç°ç产çæ°ååãæºè½ååç½ç»åçæ¹é¢åæ¥ç巨大ä½ç¨ï¼
1ãéè¿æ¡ç ææ¯è·è¸ªäº§åä»ç©ææ产å°æåå ¥åºçæ´ä¸ªç产æµç¨ï¼å®æ¶ééç产è¿ç¨ä¸åççææäºä»¶ï¼è®©æ´ä¸ªå·¥å车é´å®å ¨éæåã
2ãæ¹ååæ¥æå·¥å½å ¥è¿ç¨ï¼è¾¾å°åç¡®ãåæ¶ãå¿«éçæ°æ®åé¦ï¼é¿å 人为è¾å ¥å·®éï¼æ´éè¦çæ¯ï¼ä½¿ç°åºç产人åç²¾åéä¸å¨ä¸å¡æä½ä¸ï¼æé«å·¥ä½æçã
3ã让产åå¨æ´ä¸ªç产è¿ç¨ä¸åå¾æ¸ æ°ãéæï¼å¾å¿«åç°åºç°è´¨éé®é¢çåå ï¼å¶å®é对æªæ½è§£å³è´¨éç¶é¢é®é¢ï¼å®ç°äº§åè´¨é追溯ï¼éä½è´¨éææ¬ã
4ãæ¯ææåãå¨å¶åãåå ·ãå·¥è£ åºå管çï¼è½¦é´åå·¥ä½ä¸å¿æ¥å°å 工任å¡åæ¶ï¼å·¥è£ /åå ·åºæ¿å¯å¯¹æéçå·¥å ·ç§ç±»åæ°éè¿è¡å¿«éåå¤ï¼æ¢åç¡®å便æ·ã
5ãå®æ¶è®°å½å¹¶çæ§ç产工åºåå 工任å¡å®ææ åµï¼äººåå·¥ä½æçãå³å¨ç产çæ åµï¼è®¾å¤å©ç¨æ åµï¼äº§ååæ ¼çãåºåççæ åµï¼éè¿ç³»ç»ç»¼åç»è®¡ä¿¡æ¯æ¥è¯¢åè½ï¼åæ¶åç°æ§è¡è¿ç¨ä¸çé®é¢å¹¶è¿è¡æ¹åã
6为ä¼ä¸å®ç°ä¸ä½åç设计ä¸å¶é æä¾å è¿ææ¯å¨å¤ï¼æ¯æä¼ä¸å®æ½ç²¾çç产åç²¾ç»å管çã
åè¥è¿æ¯è½¯ä»¶ çæææ
äºãMESç³»ç»åè½
1ãå¶é èµæºåé ä¸ç¶ææ¥åï¼
2ã详ç»å·¥åºä½ä¸è®¡åï¼
3ãç产è°åº¦ï¼
4ã车é´æ档管çï¼
5ãæ°æ®ééï¼
6ã人åèµæºç®¡çï¼
7ãè´¨é管çï¼
8ãå·¥èºè¿ç¨ç®¡çï¼
9ã设å¤ç»´ä¿®ç®¡çï¼
ã产åè·è¸ªï¼
ãä¸ç»©åæï¼
一文读懂,硬核 Apache DolphinScheduler3.0 源码解析
全网最全大数据面试提升手册!
一、DolphinScheduler设计与策略
了解DolphinScheduler,首先需要对调度系统有基础的了解,本文将重点介绍流程定义、流程实例、任务定义与任务实例。DolphinScheduler在设计上采用去中心化架构,集群中没有Master与Slave之分,提高系统的稳定性和可用性。
1.1 分布式设计
分布式系统设计分为中心化与去中心化两种模式,每种模式都有其优势与不足。中心化设计的集群中Master与Slave角色明确,Master负责任务分发与监控Slave健康状态,Slave执行任务。去中心化设计中,所有节点地位平等,无“管理者”角色,减少单点故障。
1.1.1 中心化设计
中心化设计包括Master与Slave角色,Master监控健康状态,均衡任务负载。但Master的单点故障可能导致集群崩溃,且任务调度可能集中于Master,产生过载。
1.1.2 去中心化设计
去中心化设计中,所有节点地位平等,通过Zookeeper等分布式协调服务实现容错与任务调度。这种设计降低了单点故障风险,但节点间通信增加了实现难度。
1.2 架构设计
DolphinScheduler采用去中心化架构,由UI、API、MasterServer、Zookeeper、WorkServer、Alert等组成。MasterServer与WorkServer均采用分布式设计,通过Zookeeper进行集群管理和容错。
1.3 容错问题
容错包括服务宕机容错与任务重试。Master容错依赖ZooKeeper,Worker容错由MasterScheduler监控“需要容错”状态的任务实例。任务失败重试需区分任务失败重试、流程失败恢复与重跑。
1.4 远程日志访问
Web(UI)与Worker节点可能不在同一台机器上,远程访问日志需要通过RPC实现,确保系统轻量化。
二、源码分析
2.1 工程模块介绍与配置文件
2.1.1 工程模块介绍
2.1.2 配置文件
配置文件包括dolphinscheduler-common、API、MasterServer与WorkerServer等。
2.2 API主要任务操作接口
API接口支持流程上线、定义、查询、修改、发布、下线、启动、停止、暂停、恢复与执行功能。
2.3 Quaterz架构与运行流程
Quartz架构用于调度任务,Scheduler启动后执行Job与Trigger。基本流程涉及任务初始化、调度与执行。
2.4 Master启动与执行流程
Master节点启动与执行流程涉及Quartz框架、槽(slot)与任务分发。容错代码由Master节点监控并处理。
2.5 Worker启动与执行流程
Worker节点执行流程包括注册、接收任务、执行与状态反馈。负载均衡策略由配置文件控制。
2.6 RPC交互
Master与Worker节点通过Netty实现RPC通信,Master负责任务分发与Worker状态监控,Worker接收任务与反馈执行状态。
2.7 负载均衡算法
DolphinScheduler提供多种负载均衡算法,包括加权随机、平滑轮询与线性负载,通过配置文件选择算法。
2.8 日志服务
日志服务通过RPC与Master节点通信,实现日志的远程访问与查询。
2.9 报警
报警功能基于规则筛选数据,并调用相应报警服务接口,如邮件、微信与短信通知。
本文提供了DolphinScheduler的核心设计与源码分析,涵盖了系统架构、容错机制、任务调度与日志管理等方面,希望对您的学习与应用有所帮助。