精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

揭秘XXLJOB:任務調度和執行的全面指南

開發 前端
在本期文章中,向大家介紹了XXLJOB是如何啟動和執行任務的,在下期文章中將向大家介紹XXLJOB其他的細節,由于一個定時任務系統的復雜,很多內容還是需要各位讀者自己看一遍才能真正的理解,畢竟代碼才是真正的老師。

本文主要向大家介紹一下xxljob在調度任務時執行了哪些操作,這也是xxljob最核心的功能

表結構

xxljob是如何觸發任務的,首先我們先了解一下xxljob的表結構

xxl_job_info 記錄的是各個具體job的信息 是xxljob中最重要的表 這張表記錄的job 的調度類型,調度時機,路由策略,阻塞策略等信息

CREATE TABLE `xxl_job_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '執行器主鍵ID',
  `job_desc` varchar(255) NOT NULL,
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `author` varchar(64) DEFAULT NULL COMMENT '作者',
  `alarm_email` varchar(255) DEFAULT NULL COMMENT '報警郵件',
  `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '調度類型',
  `schedule_conf` varchar(128) DEFAULT NULL COMMENT '調度配置,值含義取決于調度類型',
  `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '調度過期策略',
  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '執行器路由策略',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '執行器任務handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '執行器任務參數',
  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞處理策略',
  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任務執行超時時間,單位秒',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失敗重試次數',
  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE類型',
  `glue_source` mediumtext COMMENT 'GLUE源代碼',
  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE備注',
  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新時間',
  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任務ID,多個逗號分隔',
  `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '調度狀態:0-停止,1-運行',
  `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次調度時間',
  `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次調度時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

xxl_job_log 這張表記錄了job執行時的一些參數 包括了執行次數 執行參數 jobid, 調度的時機和結果 xxl_job_log_report 記錄了調度中心的統計數據 xxl_job_logglue記錄了glue類型job的日志

xxl_job_registry 記錄了在調度中心注冊的執行器信息 xxl_job_group 記錄了調度中心的分組情況 xxl_job_user 記錄了用戶信息 xxl_job_lock記錄了鎖信息 其實我們通過表的設計就以了解一些xxljob的設計思想,下面我們就來看一下一個任務是如何被調度的

架構簡述

圖片圖片

  1. 執行器注冊到調度中心
  2. 頁面新建/修改job ->根據執行策略計算 下次執行時間
  3. 執行線程輪詢表  5s 執行job  -> 阻塞策略
  4. 記錄執行信息 ->更新下次執行

大家可以看到上圖是一個簡要的job執行的流程圖 在了解代碼前和大家簡要的介紹一下XXLJOB的通信結構,調度中心和執行器各維護一個netty的服務,雙方使用HTTP通信,執行器的ip和端口在啟動時會通過http調用通知調度中心,各位在啟動服務時是可以看到XXLJOB對應的日志的,在看XXLJOB的代碼時大家會看到一些以client或impl結尾的實現,對應的就是調度中心和執行器的netty的實現。

圖片圖片

下面筆者帶大家深入了解一下具體的代碼 在執行器端需配置一些參數,從而時執行器能夠找到調度中心

圖片圖片

包括了調度中心的地址,執行器的ip,端口(可以不填),日志的過期時間(非必填)

代碼詳解

  1. 啟動/初始化階段 在服務啟動時會啟動netty的服務
XxlJobSpringExecutor#afterSingletonsInstantiated()
->super.start()
->initEmbedServer();
->embedServer.start();
->startRegistry();
->ExecutorRegistryThread.getInstance().start()

最終啟動一個名為registryThread的線程,在這個線程中調用 adminBiz.registry()方法,調用調度中心的接口實現注冊 此時調度中心與執行器(客戶端)就建立起了連接 此外在spring的bean初始化完成后 在XxlJobAdminConfig這個類中還利用afterPropertiesSet實現了初始化了一些線程

圖片圖片

這些線程的作用分別為處理國際化對應的語言,快慢線程池的初始化,服務注冊監控,任務執行監控,任務完成監控,日志報表處理 ,任務執行,限于篇幅,這些線程的作用我們下期再詳細的解釋,到現在為止,XXLJOB的啟動就已經完成了。

  1. 頁面處理

圖片圖片

在調度中心的界面我們可以新建一個調度任務,其中有幾個參數需要注意,jobhandler,運行模式,阻塞策略,cron。由于目前大部分是在springboot中運行的,所以大部分是依賴Bean執行的,jobHandler則是代碼中定義的job名稱。運行模式決定了調度中心選擇執行器的邏輯

圖片圖片

阻塞策略決定了連續執行時的策略

圖片圖片

cron則決定了調度的時間

  1. 執行

下面我們深入了解一下一個job是如果被調度中心執行的。執行的邏輯在上文中提到的JobScheduleHelper中實現。首先會先獲取鎖,此處是利用mysql的for update實現的, 然后會獲取5秒內的任務列表

圖片圖片

逐個遍歷拿到的任務,如果任務已經超過了執行時間+預讀時間(5s),根據過期策略決定是丟棄還是立即執行一次,并且更新下次執行時間 如果當前時間大于任務下次執行時間,則將任務放入執行線程池,等待執行,更新下次執行時間,如果下次執行時間在5s內,則會將任務放入時間輪中,等待其他線程處理,再此更新此任務執行時間如果均不是上述兩種情況,則會將任務放入時間輪中,更新執行時間,等待其他線程處理。

for (XxlJobInfo jobInfo: scheduleList) {
    // time-ring jump
    if (nowTime > jobInfo.getTriggerNextTime() + PRE_READ_MS) {
        // 2.1、trigger-expire > 5s:pass && make next-trigger-time
        logger.warn(">>>>>>>>>>> xxl-job, schedule misfire, jobId = " + jobInfo.getId());
        // 1、misfire match
        MisfireStrategyEnum misfireStrategyEnum = MisfireStrategyEnum.match(jobInfo.getMisfireStrategy(), MisfireStrategyEnum.DO_NOTHING);
        if (MisfireStrategyEnum.FIRE_ONCE_NOW == misfireStrategyEnum) {
            // FIRE_ONCE_NOW 》 trigger
            JobTriggerPoolHelper.trigger(jobInfo.getId(), TriggerTypeEnum.MISFIRE, -1, null, null, null);
            logger.debug(">>>>>>>>>>> xxl-job, schedule push trigger : jobId = " + jobInfo.getId() );
        }
        // 2、fresh next
        refreshNextValidTime(jobInfo, new Date());
    } else if (nowTime > jobInfo.getTriggerNextTime()) {
        // 2.2、trigger-expire < 5s:direct-trigger && make next-trigger-time
        // 1、trigger
        JobTriggerPoolHelper.trigger(jobInfo.getId(), TriggerTypeEnum.CRON, -1, null, null, null);
        logger.debug(">>>>>>>>>>> xxl-job, schedule push trigger : jobId = " + jobInfo.getId() );
        // 2、fresh next
        refreshNextValidTime(jobInfo, new Date());
        // next-trigger-time in 5s, pre-read again
        if (jobInfo.getTriggerStatus()==1 && nowTime + PRE_READ_MS > jobInfo.getTriggerNextTime()) {
            // 1、make ring second
            int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
            // 2、push time ring
            pushTimeRing(ringSecond, jobInfo.getId());
            // 3、fresh next
            refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
        }
    } else {
        // 2.3、trigger-pre-read:time-ring trigger && make next-trigger-time
        // 1、make ring second
        int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
        // 2、push time ring
        pushTimeRing(ringSecond, jobInfo.getId());
        // 3、fresh next
        refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));\
    }
}

具體執行任務的方法是 com.xxl.job.admin.core.trigger.XxlJobTrigger#trigger

在這個方法中會根據執行策略(ExecutorRouteStrategyEnum)選擇合適的執行器,找到對應的執行器,利用netty的接口執行對應的任務

尾聲

在本期文章中,向大家介紹了XXLJOB是如何啟動和執行任務的,在下期文章中將向大家介紹XXLJOB其他的細節,由于一個定時任務系統的復雜,很多內容還是需要各位讀者自己看一遍才能真正的理解,畢竟代碼才是真正的老師。

責任編輯:武曉燕 來源: 靈墨AI探索室
相關推薦

2024-08-27 09:34:24

2025-07-03 00:28:41

2023-11-24 08:00:54

工具Go模板

2024-07-17 17:54:28

XXLJob分布式任務Java

2013-12-17 10:15:19

OpenMP任務調度

2023-11-20 22:55:00

Goroutine調度器

2023-11-07 07:56:40

2023-12-01 08:21:51

開發者Android組件庫

2023-12-29 09:38:00

Java線程池

2023-12-26 07:44:00

Spring定時調度

2025-07-09 09:00:00

2023-11-22 13:18:02

Linux調度

2025-04-07 04:00:00

教學型任務調度系統

2023-05-08 16:38:46

任務調度分布式任務調度

2010-06-23 16:09:40

Linux Bash

2020-05-18 10:27:06

框架EB級系統

2022-09-16 11:23:59

Python框架Celery

2024-07-31 08:18:40

2023-10-06 12:15:02

2020-04-01 16:10:02

PythonAPScheduler調度
點贊
收藏

51CTO技術棧公眾號

国产成人免费在线| 色综合天天爱| 91高清视频在线| 一区不卡视频| 成人高潮片免费视频| 亚洲少妇自拍| 日韩亚洲在线观看| 色哟哟视频在线| 日本成人福利| 亚洲一区二区欧美日韩 | 亚洲一区二区三区免费| 亚洲成a人v欧美综合天堂| 欧美一级爱爱| 亚洲不卡免费视频| 日本欧美一区二区在线观看| 欧美黑人一级爽快片淫片高清| 亚洲自拍偷拍一区二区| 九色精品蝌蚪| 欧美亚洲综合网| 欧美 日韩 亚洲 一区| 91露出在线| 99久久婷婷国产| 亚洲自拍另类欧美丝袜| 看黄色一级大片| 亚洲免费大片| 欧美丰满老妇厨房牲生活| 337人体粉嫩噜噜噜| 日韩三级毛片| 精品久久久久久久久久久久久久久| 色一情一乱一伦一区二区三区日本| 欧美6一10sex性hd| 亚洲人妖av一区二区| 视频一区视频二区视频| 天天操天天干天天操| 国产精品系列在线播放| 日韩av123| www成人在线| 日韩亚洲精品在线| 久久久免费精品视频| 亚洲波多野结衣| 色中色综合网| 色老头一区二区三区在线观看| 精品人妻少妇嫩草av无码| 国产乱论精品| 亚洲精品999| 亚洲精品无码一区二区| 综合激情久久| 欧美白人最猛性xxxxx69交| 国产性生活一级片| 亚洲日本免费电影| 欧美猛男gaygay网站| av污在线观看| 懂色aⅴ精品一区二区三区| 一本大道久久精品懂色aⅴ| 国产在线观看福利| 欧美www.| 欧美日韩国产天堂| 一级做a免费视频| 不卡一区视频| 欧美一级xxx| 麻豆tv在线观看| 国产伦理久久久久久妇女 | 在线观看黄av| 中文字幕免费不卡| 在线观看日韩羞羞视频| 老司机av在线免费看| 亚洲欧美经典视频| 欧美黄色免费网址| 亚洲一区站长工具| 欧美亚洲动漫精品| 91亚洲精品久久久蜜桃借种| 国产精品2区| 欧美va亚洲va在线观看蝴蝶网| 91精品人妻一区二区三区四区| 91成人噜噜噜在线播放| 日韩精品免费看| 特级西西www444人体聚色 | 久久久久久久久久看片| 视频一区二区三区在线观看| 国产在线观看av| 午夜欧美视频在线观看 | 精品一区二区三区在线视频| 亚洲在线观看视频| 粉嫩小泬无遮挡久久久久久| 91丨porny丨国产入口| 天堂av一区二区| 羞羞污视频在线观看| 香蕉久久一区二区不卡无毒影院| 激情网站五月天| 国产一区二区三区免费在线| 337p日本欧洲亚洲大胆精品| 中文字幕国产专区| 91精品婷婷色在线观看| 91av视频在线播放| 一二三区在线播放| 99久久伊人网影院| 性做爰过程免费播放| 亚洲欧洲美洲av| 欧美一区二区大片| 国产三级视频网站| 重囗味另类老妇506070| 人人澡人人澡人人看欧美| 亚洲一级黄色大片| 91亚洲国产成人精品一区二区三| 日韩一二三区不卡在线视频| 国产偷倩在线播放| 欧美熟乱第一页| 影音先锋黄色资源| 中文av一区| 国产成人在线亚洲欧美| 风流老熟女一区二区三区| 国产精品毛片久久久久久| 黄页网站大全在线观看| 国产精品99久久免费| 亚洲午夜av久久乱码| 国产午夜精品无码| 国产一区在线不卡| 五月天久久综合网| www.综合| 精品国产乱码久久久久久浪潮| 日日操免费视频| 久久黄色影院| 久久人人九九| а√天堂中文在线资源8| 91精品国产麻豆国产自产在线| 欧美特级黄色录像| 国产欧美69| 国产一区精品视频| 男人天堂亚洲天堂| 欧美一区二区免费| av最新在线观看| 蜜桃av一区二区在线观看| 久久一区二区三区av| av在线最新| 亚洲成人精品在线| 久久久久亚洲av无码专区| 国产一区美女在线| 中文字幕中文字幕在线中一区高清| se01亚洲视频| 亚洲欧美国产精品专区久久 | jizz中文字幕| 三级在线观看一区二区| 蜜桃91精品入口| 在线观看网站免费入口在线观看国内| 亚洲激情中文字幕| 国语对白永久免费| 久久久精品免费网站| 乱子伦视频在线看| 成人看的视频| 国产精品私拍pans大尺度在线| 二区在线视频| 欧美日韩精品福利| 全网免费在线播放视频入口| 激情综合色综合久久| 偷拍盗摄高潮叫床对白清晰| 2019中文亚洲字幕| 九九热精品视频| 韩国av免费在线| 欧美日韩国产色视频| 偷拍女澡堂一区二区三区| 久久看片网站| 亚洲日本japanese丝袜| 精品久久亚洲| 国内精品久久久久久久久| 污视频软件在线观看| 欧美性xxxxxx| 一区二区三区在线播放视频| 国产自产2019最新不卡| 国产freexxxx性播放麻豆| 四虎5151久久欧美毛片| 国产精品欧美一区二区| 国产丝袜在线| 亚洲黄色在线观看| 国产成人自拍偷拍| 亚洲色图欧洲色图| 久久久老熟女一区二区三区91| 久久激情网站| 4444在线观看| 色天天色综合| 成人免费视频网址| av漫画网站在线观看| 国产一区二区三区在线看| a网站在线观看| 黄色一区二区在线观看| 欧美巨胸大乳hitomi| 国产69精品一区二区亚洲孕妇 | 精品综合久久久久久8888| 白白操在线视频| 亚洲素人在线| 亚洲精品欧美一区二区三区| 麻豆网站免费在线观看| 中文字幕在线观看亚洲| 视频一区二区免费| 欧美日韩欧美一区二区| 日韩成人高清视频| 亚洲婷婷综合久久一本伊一区| 色综合久久五月| 久久国内精品自在自线400部| 久久成人福利视频| 国产二区精品| 区一区二区三区中文字幕| 欧美日韩黄网站| 国产精品免费看久久久香蕉| 2021天堂中文幕一二区在线观| 中文字幕精品av| 色呦呦中文字幕| 欧美一区二区成人6969| 久久精品偷拍视频| 五月婷婷色综合| 中文字幕在线有码| 国产精品视频一二| 亚洲欧美视频在线播放| 丰满白嫩尤物一区二区| theporn国产精品| 日本欧美一区二区三区乱码| 国内外成人激情视频| 欧美特黄一区| 中国一级黄色录像| 日韩欧美不卡| 欧洲精品码一区二区三区免费看| 国产精品白丝av嫩草影院| 成人福利视频网| 欧美极品在线| 国产精品视频一区二区三区四| 亚洲天堂av在线| 97在线精品国自产拍中文| 羞羞的网站在线观看| 久久精品一偷一偷国产| 91精品国产91久久久久游泳池| 亚洲男人天堂久| 色资源在线观看| 亚洲第一精品电影| 狠狠躁夜夜躁av无码中文幕| 日韩无一区二区| 国产三级视频在线播放| 51精品国自产在线| 国产精品无码久久av| 欧美日韩综合不卡| 亚洲天堂中文字幕在线| 欧美日韩一卡二卡三卡| 久久久久精彩视频| 欧美视频中文一区二区三区在线观看| 老熟妇一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 一级做a免费视频| 麻豆91精品视频| 五月天中文字幕在线| 国产麻豆精品视频| 一区二区在线免费观看视频| 国产黄色精品视频| xxxx视频在线观看| k8久久久一区二区三区| 800av在线播放| 久久久久久夜精品精品免费| 久久久久久亚洲中文字幕无码| 国产午夜精品美女毛片视频| 国产综合精品久久久久成人av| 中文av字幕一区| 日韩一区二区不卡视频| 亚洲资源中文字幕| 五月婷婷亚洲综合| 欧洲av一区二区嗯嗯嗯啊| 一本色道久久综合亚洲| 欧美第一区第二区| 天天干天天干天天干| 亚洲视频专区在线| 老司机在线看片网av| 欧美精品成人91久久久久久久| 岛国av在线网站| 国产精品96久久久久久| 99精品视频在线免费播放| 国产精品乱码视频| 啄木系列成人av电影| 一本久道久久综合狠狠爱亚洲精品| 欧美成人高清| 91视频最新入口| 久久99蜜桃精品| 美女黄色一级视频| 欧美韩日一区二区三区| 欧美人与禽zozzo禽性配| 欧美日韩中文字幕综合视频| 波多野结衣在线观看一区| 日韩欧美亚洲国产另类 | 澳门久久精品| 欧美日韩一区在线播放| 中文乱码免费一区二区三区下载| 日日摸日日碰夜夜爽无码| 欧美aaa在线| 深夜视频在线观看| 国产精品无码永久免费888| 久久视频免费看| 欧美色图片你懂的| 日批视频在线播放| 麻豆成人在线看| 黄色综合网址| 操一操视频一区| 久久一区91| 一本大道熟女人妻中文字幕在线 | 91国偷自产一区二区三区成为亚洲经典| 国产又粗又黄又爽| 亚洲片在线观看| 91豆花视频在线播放| 成人写真视频福利网| 亚洲激情播播| 国产一区二区四区| 狠狠色丁香久久婷婷综合_中 | 国产91免费在线观看| 亚洲午夜精品视频| 国产污视频在线播放| 91视频国产一区| 精品国产aⅴ| 免费看又黄又无码的网站| 国产99精品视频| 久久国产波多野结衣| 91国偷自产一区二区三区成为亚洲经典 | 久久久久久不卡| 亚洲国产精品成人av| 尤物视频在线看| 成人国产精品久久久| 成人亚洲一区| caoporn超碰97| 久久久久久**毛片大全| 国产一级淫片a| 日韩免费看网站| 国产视频在线播放| 91精品视频专区| 久久精品高清| 一级片视频免费观看| 国产欧美日韩激情| 黄色片中文字幕| 亚洲精品国精品久久99热一| 日韩影视在线| 国产精品精品软件视频| 欧美日韩国产成人精品| www.色.com| 一区二区三区成人| www.激情五月| 欧美激情视频免费观看| 2023国产精华国产精品| 欧美日韩中文字幕在线播放| 国产在线日韩欧美| 国产三级国产精品国产国在线观看| 欧美日韩激情在线| 日本亚洲精品| 91嫩草在线视频| 一区二区中文字| 熟妇无码乱子成人精品| 有码一区二区三区| 高清国产mv在线观看| 国模吧一区二区三区| 免费看久久久| 亚洲中文字幕无码中文字| 91麻豆免费视频| 男操女视频网站| 日日狠狠久久偷偷四色综合免费| 欧美天堂在线| 九九久久九九久久| 不卡的av网站| 欧美在线观看不卡| 一区二区三区视频免费在线观看| 久久精品超碰| av一区二区三区免费观看| 岛国一区二区三区| 九九热精品视频在线| 中文字幕在线观看日韩| 久久久久久爱| 欧美日韩在线一| 国产欧美日韩另类视频免费观看| 中文字幕人妻一区二区三区视频 | 水蜜桃在线视频| 日韩亚洲视频| 国产99精品在线观看| 久久人妻免费视频| 色综合影院在线| 精品人人人人| 男人添女人下面免费视频| 伊人开心综合网| 国产视频第一页在线观看| 91久久精品美女高潮| 日韩香蕉视频| 一级性生活免费视频| 日韩av在线影院| 婷婷激情成人| 午夜精品久久久久久久无码| 国产精品免费aⅴ片在线观看| www.狠狠干| 国产精品日韩欧美综合| 欧美涩涩视频| 特级西西www444人体聚色| 精品日韩一区二区| 国产精品videossex撒尿| 国产乱人伦精品一区二区三区| 久久你懂得1024| 午夜精品久久久久久久99| 日韩美女视频免费在线观看| 欧美在线二区| 国产在线免费av| 日韩av中文字幕在线播放| 国产精品久久久久久久久久久久久久久| 水蜜桃色314在线观看|