精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

18aaaa精品欧美大片h| 亚洲自拍第二页| 伊甸园亚洲一区| 欧美在线999| 丰满人妻一区二区三区53号 | 国产精品啊啊啊| 日韩精品免费电影| 久久精品影视大全| 黄色美女视频在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 91成人免费在线观看| 国产精品一区无码| 欧美99在线视频观看| 亚洲欧洲国产一区| 四虎国产精品免费| 国产成人精品123区免费视频| 亚洲人成影院在线观看| 欧美一二三四五区| 蜜桃视频污在线观看| 免费成人在线网站| 69久久夜色精品国产69乱青草| 极品尤物一区二区| 日韩高清电影免费| 精品噜噜噜噜久久久久久久久试看| 亚洲免费av一区二区三区| 国产丝袜在线观看视频| 国产精品久久久久久久久免费樱桃| 韩国成人av| 精品人妻无码一区二区色欲产成人| 日韩高清在线电影| 456亚洲影院| 成人免费看片98| 中文字幕一区二区三区欧美日韩 | 蜜桃av一区二区三区| 欧美一区二三区| 国产乡下妇女做爰毛片| 夜间精品视频| 中文字幕成人在线| 亚洲天堂久久新| 日本亚洲不卡| 亚洲国产精品网站| www.美色吧.com| 在这里有精品| 日韩精品一区二| 国产精品中文久久久久久| 六九午夜精品视频| 色拍拍在线精品视频8848| 成人免费在线小视频| 9765激情中文在线| 亚洲1区2区3区视频| 97超碰国产精品| 日本动漫理论片在线观看网站 | 99久久久久久| 国产自产在线视频一区| а√中文在线资源库| 国产乱码一区二区三区| 亚洲free嫩bbb| a级片在线视频| 国产美女娇喘av呻吟久久| 91欧美日韩一区| www.国产.com| 成人免费的视频| 国模一区二区三区私拍视频| 日韩一级免费视频| www久久久久| 久久久久久久久一区二区| 无码国产精品一区二区色情男同| 91在线国产观看| 日本不卡一区二区三区在线观看 | 国产熟女一区二区三区四区| 国产一区二区毛片| 国产精品一区二区你懂得| 色噜噜一区二区三区| 91麻豆精东视频| 水蜜桃亚洲精品| h视频在线免费观看| 亚洲成人久久影院| 国产一区二区视频免费在线观看| 麻豆精品蜜桃| 91精品欧美久久久久久动漫| 老熟女高潮一区二区三区| 欧美电影免费网站| 亚洲最新av在线网站| 三级黄色免费观看| 黄色欧美成人| 国产精品国产自产拍高清av水多| 一级黄色a视频| 成人一区二区视频| 日韩精彩视频| 青青青国内视频在线观看软件| 疯狂做受xxxx欧美肥白少妇| 亚洲xxxx2d动漫1| 99re8这里有精品热视频8在线| 日韩成人黄色av| 日本免费网站视频| 亚洲精品一二| 国产精品美女免费看| 亚洲av无码一区二区乱子伦| 久久免费视频一区| 99热这里只有精品免费| 丝袜美腿一区| 精品嫩草影院久久| 国产精品理论在线| 99视频一区| 成人黄色中文字幕| 美国一级片在线免费观看视频| 亚洲欧洲性图库| 日本www在线视频| 二区三区精品| 一本色道久久综合亚洲精品小说| 欧美日韩国产精品一区二区三区| 三级久久三级久久久| 翡翠波斯猫1977年美国| 尤物在线视频| 色综合欧美在线| 男人网站在线观看| 综合国产精品| 国产成人激情视频| 午夜18视频在线观看| 亚洲欧洲综合另类在线| 日韩福利视频在线| 欧美午夜18电影| 欧美激情视频网站| 国产伦一区二区| 国产精品天天看| 欧美 国产 小说 另类| 91免费精品国偷自产在线在线| 在线播放国产一区中文字幕剧情欧美 | 欧美精品一区二区三区精品| 91av在线网站| 天天干,夜夜爽| 亚洲国产精品嫩草影院| 中文在线字幕观看| 夜间精品视频| 亚洲一区久久久| 午夜不卡视频| 欧美日韩免费观看一区三区| 欧美另类z0zx974| 久久久久网站| 欧美久久久久久一卡四| 日韩欧美一中文字暮专区| 亚洲精品乱码久久久久久金桔影视| 欧美三级 欧美一级| 韩国成人在线视频| 熟妇熟女乱妇乱女网站| 欧美成人三级| 国产一区二区黄| 欧美一级黄视频| 中文在线资源观看网站视频免费不卡| 妞干网在线免费视频| 免费一区二区| 国产精品对白刺激| 午夜激情视频在线观看| 欧美精品久久一区| 中文字幕另类日韩欧美亚洲嫩草| 国产一区二区不卡老阿姨| av电影一区二区三区| 精品一区二区三区亚洲| 久久99久久99精品中文字幕| 亚洲av无码乱码在线观看性色| 亚洲影视在线观看| 国产成人av无码精品| 亚洲在线网站| 日本一区不卡| 日韩欧国产精品一区综合无码| 久久精品欧美视频| 亚洲国产精品久久久久久久| 亚洲超丰满肉感bbw| 野外性满足hd| 免费看欧美美女黄的网站| 26uuu成人| 国产精品45p| 人体精品一二三区| 亚洲搞黄视频| 精品乱人伦一区二区三区| 国产成人无码一区二区在线播放| 亚洲国产岛国毛片在线| 亚洲高清在线不卡| 亚洲国产专区| 色爱区成人综合网| 精品亚洲二区| 国产91色在线|| 黄网站app在线观看| 亚洲黄色免费三级| 中文字幕av久久爽| 亚洲网友自拍偷拍| 人人妻人人澡人人爽| 国产高清精品久久久久| www.中文字幕在线| 天天综合久久| 蜜桃视频在线观看成人| 91成人app| 欧美一级片在线播放| 日本a在线播放| 亚洲精品国产成人| 国产精品老熟女视频一区二区| 一区二区三区日韩欧美精品| 一区二区精品免费| 国产成人8x视频一区二区| 亚洲爆乳无码专区| 欧美日本一区| 亚洲欧美国产精品桃花| 欧美日日夜夜| 91精品天堂| 国产精品麻豆成人av电影艾秋| 欧美黑人又粗大| av中文在线| 亚洲精品久久7777777| 国产农村老头老太视频| 日本高清不卡视频| 国产在线视频第一页| 中文字幕一区二区在线播放| 日本黄色特级片| 国产成人在线免费| jizz欧美性11| 久热精品视频| 国产精品宾馆在线精品酒店| 亚洲九九视频| 亚洲欧美国产精品桃花| 国际精品欧美精品| 黑人中文字幕一区二区三区| 精品国产第一国产综合精品| 国产精品久久电影观看| 一二三四视频在线中文| 欧美国产亚洲视频| 麻豆av免费在线观看| 亚洲最新中文字幕| 可以免费看污视频的网站在线| 欧美xfplay| aaa一区二区| 欧美男人的天堂一二区| 亚洲天堂avav| 欧美吻胸吃奶大尺度电影| 一级做a爰片久久毛片| 欧美日韩另类字幕中文| 男人天堂中文字幕| 午夜私人影院久久久久| 国产网址在线观看| 亚洲国产中文字幕在线视频综合| 国产高潮国产高潮久久久91| 一区二区中文字幕在线| 51精品免费网站| 国产精品电影一区二区| 欧美88888| 一区精品在线播放| 欧美黄色aaa| 亚洲激情五月婷婷| 久久久精品国产sm调教| 亚洲影院理伦片| 日韩和一区二区| 好吊成人免视频| 精品不卡一区二区| 在线观看成人小视频| 中文字幕免费观看视频| 欧美精品xxxxbbbb| 国产黄色片免费观看| 精品蜜桃在线看| 亚洲 欧美 精品| 亚洲欧美在线一区二区| аⅴ资源新版在线天堂| 日韩一级黄色av| 超碰在线免费播放| 欧美国产视频一区二区| 国产乱码精品一区二三赶尸艳谈| 欧美一区二区.| 麻豆久久久久| 99re国产在线播放| 天堂va在线高清一区| 韩国一区二区三区美女美女秀| 天天躁日日躁狠狠躁欧美巨大小说 | 亚洲第一福利社区| 日本成人三级电影网站| 久久精品国产99久久| 六月婷婷激情网| 亚洲免费成人| 无需播放器的av| 国产精品自拍av| 中文在线一区二区三区| 亚洲国产精品激情在线观看| 日本午夜在线观看| 精品欧美aⅴ在线网站| 最新黄色网址在线观看| 日韩手机在线导航| 日本人妖在线| 久久天天躁日日躁| 一级毛片久久久| 91系列在线观看| 小说区图片区色综合区| 国产精品12p| 先锋影音久久久| 色男人天堂av| 久久久国产精华| 91在线播放观看| 欧美性受xxxx黑人xyx| 囯产精品久久久久久| 国产一区二区三区三区在线观看| av毛片在线免费看| 国产精品福利片| 国产欧美自拍一区| 中文字幕在线亚洲三区| 亚洲综合丁香| av漫画在线观看| 国产精品久久二区二区| 国产精品777777| 日韩你懂的电影在线观看| av在线资源网| 浅井舞香一区二区| 视频一区日韩| 中文字幕中文字幕在线中一区高清| 99视频在线精品国自产拍免费观看| 亚洲自拍第三页| 欧美高清在线精品一区| av资源免费观看| 日韩女优毛片在线| 久做在线视频免费观看| 国产ts一区二区| 欧美黄色影院| 亚洲国产精品无码观看久久| 国内精品视频666| 国产综合精品久久久久成人av| 欧美日韩国产精品专区| 成人免费视频国产| 久久成人一区二区| 2020国产精品小视频| 日韩欧美电影一区二区| 免费在线观看成人av| 国产一级伦理片| 亚洲va国产天堂va久久en| 国产三区在线播放| 久久久久www| 91成人在线网站| 亚洲欧美国产一区二区| 热久久国产精品| 韩国三级hd中文字幕| 91福利在线看| 黄色av免费在线观看| 日韩av日韩在线观看| 久久av资源| 中文字幕无码不卡免费视频| 久久影音资源网| 日本一本在线观看| 亚洲天堂影视av| 日韩成人亚洲| 亚洲国产午夜伦理片大全在线观看网站 | 亚洲免费观看高清完整版在线| 中文字幕永久免费视频| 中文字幕亚洲国产| 国产亚洲人成a在线v网站| 亚洲美女搞黄| 国产毛片一区二区| 国语对白一区二区| 亚洲激情在线观看| 伊伊综合在线| 新呦u视频一区二区| 久久精品av麻豆的观看方式| 日韩av手机在线免费观看| 日韩亚洲欧美在线观看| 国产91足控脚交在线观看| 精品久久久久久综合日本| 午夜在线一区二区| 毛片久久久久久| 91精品国产入口| 国产精品一区hongkong| 精品免费二区三区三区高中清不卡| 国产精品嫩草99av在线| 手机看片福利视频| 91精品婷婷国产综合久久性色| 色yeye免费人成网站在线观看| 国产女主播一区二区| 爽好多水快深点欧美视频| 精品伦精品一区二区三区视频密桃| 69成人精品免费视频| 17videosex性欧美| 日韩欧美亚洲日产国| 激情综合色播五月| 日本学生初尝黑人巨免费视频| 亚洲欧美日韩在线高清直播| 久久麻豆视频| 男女私大尺度视频| 国产色综合久久| 超碰免费在线97| 国产不卡在线观看| 亚洲自拍偷拍网| 国产精品1000部啪视频| 在线不卡免费欧美| 僵尸再翻生在线观看免费国语| 天天久久人人| 国产成人av一区二区三区在线| 可以免费在线观看的av| 久久视频免费在线播放| 欧洲亚洲成人| 欧美性受xxxx黒人xyx性爽| 欧美日韩亚洲网| 国产黄a三级三级三级av在线看| 精品免费国产| 国产精品资源在线| 波多野结衣视频观看| 久久久噜噜噜久久久| 成人3d动漫在线观看| 7788色淫网站小说|