最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker部署XXL-JOB的示例代碼

 更新時(shí)間:2024年10月10日 09:43:49   作者:li.wz  
XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺,可通過MySQL用戶創(chuàng)建和Docker容器化快速部署,本文詳細(xì)介紹了從環(huán)境準(zhǔn)備到驗(yàn)證部署的全過程,具有一定的參考價(jià)值,感興趣的可以了解一下

1. 引言

XXL-JOB 是一個(gè)開源的分布式任務(wù)調(diào)度平臺,旨在簡化定時(shí)任務(wù)的管理和調(diào)度操作。其強(qiáng)大的功能和靈活性,使其在互聯(lián)網(wǎng)公司和各大企業(yè)的定時(shí)任務(wù)管理中得到了廣泛應(yīng)用。本文將詳細(xì)介紹如何在 MySQL 中創(chuàng)建一個(gè)專門的用戶以支持 XXL-JOB,并使用 Docker 容器化方式快速部署 XXL-JOB 的管理端。

2. 環(huán)境準(zhǔn)備

在開始部署之前,確保你已經(jīng)準(zhǔn)備好以下環(huán)境:

  • MySQL:用于存儲 XXL-JOB 的調(diào)度任務(wù)和日志。
  • Docker:用于容器化部署 XXL-JOB,確保其在不同環(huán)境中快速一致地運(yùn)行。

此外,還需要確保 MySQL 服務(wù)已經(jīng)啟動并能夠接受遠(yuǎn)程連接。Docker 的安裝和基礎(chǔ)操作應(yīng)當(dāng)已具備,以確保后續(xù)的部署工作順利進(jìn)行。

3. 創(chuàng)建 MySQL 用戶并授予權(quán)限

為了確保 XXL-JOB 在 MySQL 中擁有足夠的權(quán)限操作調(diào)度任務(wù)數(shù)據(jù),我們需要創(chuàng)建一個(gè)獨(dú)立的 MySQL 用戶并授予其適當(dāng)?shù)臋?quán)限。

3.1 登錄 MySQL

首先,使用以下命令以 root 用戶身份登錄到 MySQL:

mysql -u root -p

3.2 創(chuàng)建數(shù)據(jù)庫

接著,創(chuàng)建一個(gè)專用于存儲 XXL-JOB 數(shù)據(jù)的數(shù)據(jù)庫:

CREATE DATABASE IF NOT EXISTS `xxl_job` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

此步驟確保數(shù)據(jù)庫使用 UTF-8 編碼,以支持多語言環(huán)境下的數(shù)據(jù)存儲。

在這里插入圖片描述

3.3 創(chuàng)建用戶并授予權(quán)限

為 XXL-JOB 創(chuàng)建一個(gè)專門的 MySQL 用戶,并授予其對 xxl_job 數(shù)據(jù)庫的全部操作權(quán)限:

CREATE USER 'xxl_job'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON xxl_job.* TO 'xxl_job'@'%';
FLUSH PRIVILEGES;

在這里,我們使用通配符 % 允許來自任何主機(jī)的連接。如果安全性要求較高,可以將其限制為特定主機(jī)。

在這里插入圖片描述

3.4 初始化 XXL-JOB 數(shù)據(jù)庫

XXL-JOB 提供了一套初始化 SQL 腳本,用于創(chuàng)建所需的數(shù)據(jù)表和初始數(shù)據(jù)。

use `xxl_job`;

SET NAMES utf8mb4;

CREATE TABLE `xxl_job_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '執(zhí)行器主鍵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 '報(bào)警郵件',
  `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '調(diào)度類型',
  `schedule_conf` varchar(128) DEFAULT NULL COMMENT '調(diào)度配置,值含義取決于調(diào)度類型',
  `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '調(diào)度過期策略',
  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '執(zhí)行器路由策略',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '執(zhí)行器任務(wù)handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '執(zhí)行器任務(wù)參數(shù)',
  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞處理策略',
  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任務(wù)執(zhí)行超時(shí)時(shí)間,單位秒',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失敗重試次數(shù)',
  `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更新時(shí)間',
  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任務(wù)ID,多個(gè)逗號分隔',
  `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '調(diào)度狀態(tài):0-停止,1-運(yùn)行',
  `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次調(diào)度時(shí)間',
  `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次調(diào)度時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '執(zhí)行器主鍵ID',
  `job_id` int(11) NOT NULL COMMENT '任務(wù),主鍵ID',
  `executor_address` varchar(255) DEFAULT NULL COMMENT '執(zhí)行器地址,本次執(zhí)行的地址',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '執(zhí)行器任務(wù)handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '執(zhí)行器任務(wù)參數(shù)',
  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '執(zhí)行器任務(wù)分片參數(shù),格式如 1/2',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失敗重試次數(shù)',
  `trigger_time` datetime DEFAULT NULL COMMENT '調(diào)度-時(shí)間',
  `trigger_code` int(11) NOT NULL COMMENT '調(diào)度-結(jié)果',
  `trigger_msg` text COMMENT '調(diào)度-日志',
  `handle_time` datetime DEFAULT NULL COMMENT '執(zhí)行-時(shí)間',
  `handle_code` int(11) NOT NULL COMMENT '執(zhí)行-狀態(tài)',
  `handle_msg` text COMMENT '執(zhí)行-日志',
  `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警狀態(tài):0-默認(rèn)、1-無需告警、2-告警成功、3-告警失敗',
  PRIMARY KEY (`id`),
  KEY `I_trigger_time` (`trigger_time`),
  KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_log_report` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `trigger_day` datetime DEFAULT NULL COMMENT '調(diào)度-時(shí)間',
  `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '運(yùn)行中-日志數(shù)量',
  `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '執(zhí)行成功-日志數(shù)量',
  `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '執(zhí)行失敗-日志數(shù)量',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_logglue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL COMMENT '任務(wù),主鍵ID',
  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE類型',
  `glue_source` mediumtext COMMENT 'GLUE源代碼',
  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE備注',
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(64) NOT NULL COMMENT '執(zhí)行器AppName',
  `title` varchar(12) NOT NULL COMMENT '執(zhí)行器名稱',
  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '執(zhí)行器地址類型:0=自動注冊、1=手動錄入',
  `address_list` text COMMENT '執(zhí)行器地址列表,多地址逗號分隔',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL COMMENT '賬號',
  `password` varchar(50) NOT NULL COMMENT '密碼',
  `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用戶、1-管理員',
  `permission` varchar(255) DEFAULT NULL COMMENT '權(quán)限:執(zhí)行器ID列表,多個(gè)逗號分割',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_lock` (
  `lock_name` varchar(50) NOT NULL COMMENT '鎖名稱',
  PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`) VALUES (1, 'xxl-job-executor-sample', '示例執(zhí)行器', 0, NULL, '2018-11-03 22:21:31' );
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '測試任務(wù)1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代碼初始化', '2018-11-03 22:21:31', '');
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');

commit;

執(zhí)行完這些 SQL 語句后,XXL-JOB 將擁有必要的數(shù)據(jù)結(jié)構(gòu)來存儲任務(wù)信息和執(zhí)行日志。

在這里插入圖片描述

4. 使用 Docker 部署 XXL-JOB

XXL-JOB 支持 Docker 容器化部署,使其可以快速在任何支持 Docker 的環(huán)境中運(yùn)行。以下是詳細(xì)的部署步驟:

4.1 拉取 XXL-JOB 鏡像

首先,從 Docker Hub 拉取最新版本的 XXL-JOB 管理端鏡像:

docker pull xuxueli/xxl-job-admin:2.4.1

確保使用的是最新版鏡像,以獲得最新功能和安全更新。

4.2 運(yùn)行 XXL-JOB 容器

使用以下命令運(yùn)行 XXL-JOB 容器:

mkdir -p /usr/local/docker/xxl-job/logs

docker run --restart=always --privileged=true -e PARAMS="--spring.datasource.username=xxl_job --spring.datasource.password=your_password --spring.datasource.url=jdbc:mysql://your_mysql_host:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai" -p 8080:8080 -v /usr/local/docker/xxl-job/logs:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.4.1

這里,我們使用了多種參數(shù)來確保 XXL-JOB 能夠正確連接到 MySQL 數(shù)據(jù)庫,并且配置了日志存儲路徑。

在這里插入圖片描述

參數(shù)解析

  • --restart=always:確保容器在崩潰后自動重啟。
  • --privileged=true:為容器賦予更多權(quán)限,避免某些受限操作失敗。
  • -e PARAMS:通過環(huán)境變量傳遞 Spring Boot 配置項(xiàng),確保數(shù)據(jù)庫連接參數(shù)正確無誤。
  • -p 8080:8080:將容器內(nèi)部的 8080 端口映射到主機(jī),以便外部訪問。
  • -v /usr/local/docker/xxl-job/logs:/data/applogs:將主機(jī)的日志目錄掛載到容器,方便日志持久化和分析。

4.3 常見問題與調(diào)試

在運(yùn)行過程中,可能會遇到 MySQL 連接失敗或端口沖突等問題。你可以通過以下步驟進(jìn)行排查:

  • 確認(rèn) MySQL 服務(wù)正常運(yùn)行,并且 Docker 容器可以訪問 MySQL 服務(wù)器。
  • 檢查 docker logs xxl-job-admin 輸出,分析日志以排除配置錯(cuò)誤或環(huán)境問題。

5. 配置 XXL-JOB

當(dāng)容器成功運(yùn)行后,你可以通過瀏覽器訪問 http://your_server_ip:8080/xxl-job-admin 進(jìn)行管理后臺的配置。首次登錄時(shí),使用默認(rèn)的用戶名和密碼:admin/123456。

5.1 修改默認(rèn)密碼

出于安全考慮,建議立即修改默認(rèn)密碼。登錄后進(jìn)入用戶管理頁面,更新管理員賬戶的密碼,避免因弱密碼帶來的安全風(fēng)險(xiǎn)。

5.2 配置調(diào)度中心

在 調(diào)度中心配置 頁面中,設(shè)置集群信息和調(diào)度策略。你可以根據(jù)業(yè)務(wù)需求配置不同的執(zhí)行策略,如并行執(zhí)行、錯(cuò)峰執(zhí)行等,以滿足復(fù)雜場景下的任務(wù)調(diào)度需求。

6. 驗(yàn)證部署

配置完成后,你可以創(chuàng)建一個(gè)簡單的任務(wù)來驗(yàn)證 XXL-JOB 是否正常工作。以下是一個(gè)快速的驗(yàn)證步驟:

  • 進(jìn)入 XXL-JOB 管理后臺。
  • 新建一個(gè)調(diào)度任務(wù),例如每分鐘執(zhí)行一次的 Hello World 打印任務(wù)。
  • 觀察任務(wù)執(zhí)行情況,確保任務(wù)按預(yù)期時(shí)間和頻率執(zhí)行。

如果任務(wù)執(zhí)行成功,說明 XXL-JOB 已經(jīng)正確部署并可以投入生產(chǎn)使用。

在這里插入圖片描述

7. 總結(jié)

通過本文的介紹,我們完成了在 Docker 環(huán)境中部署 XXL-JOB 的全過程。從 MySQL 數(shù)據(jù)庫用戶的創(chuàng)建,到 Docker 容器的部署,再到最后的任務(wù)驗(yàn)證,XXL-JOB 的部署步驟清晰明確。借助 Docker,XXL-JOB 可以快速部署到任何支持 Docker 的環(huán)境中,極大簡化了運(yùn)維工作。

到此這篇關(guān)于Docker部署XXL-JOB的示例代碼的文章就介紹到這了,更多相關(guān)Docker部署XXL-JOB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker在已有的tomcat鏡像上打新的鏡像的Dockerfile編寫說明介紹

    docker在已有的tomcat鏡像上打新的鏡像的Dockerfile編寫說明介紹

    這篇文章主要介紹了docker在已有的tomcat鏡像上打新的鏡像的Dockerfile編寫說明介紹,需要的朋友可以參考下
    2016-10-10
  • 利用Docker制作Nginx+PHP鏡像的步驟詳解

    利用Docker制作Nginx+PHP鏡像的步驟詳解

    Nginx是一個(gè)高性能的Web和反向代理服務(wù)器,它具有很多非常優(yōu)越的特性,那么這篇文章小編就分步驟向大家介紹如何利用Docker制作Nginx+PHP的鏡像,文章介紹的很詳細(xì),對大家具有一定的參考借鑒價(jià)值,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • Docker探索namespace詳解

    Docker探索namespace詳解

    以前對docker中的namespace了解甚少,今天在網(wǎng)上查閱相關(guān)文章,發(fā)現(xiàn)這篇還不錯(cuò),介紹了namespace資源隔離以及進(jìn)行namespace api操作的四種方式等內(nèi)容,這里分享給大家,供參考。
    2017-10-10
  • 在 docker 之間導(dǎo)出導(dǎo)入鏡像的方法

    在 docker 之間導(dǎo)出導(dǎo)入鏡像的方法

    本篇文章主要介紹了在 docker 之間導(dǎo)出導(dǎo)入鏡像的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 對已有的docker容器增加新的端口映射問題(兩種方式)

    對已有的docker容器增加新的端口映射問題(兩種方式)

    這篇文章主要介紹了對已有的docker容器增加新的端口映射,在運(yùn)行容器時(shí)指定映射端口運(yùn)行后,如果想要添加新的端口映射,使用兩種方式都可以,需要的朋友可以參考下
    2022-01-01
  • 使用Docker將容器打成鏡像的方法步驟

    使用Docker將容器打成鏡像的方法步驟

    本文主要介紹了使用Docker將容器打成鏡像的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 使用Docker Swarm部署高可用集群的詳細(xì)步驟

    使用Docker Swarm部署高可用集群的詳細(xì)步驟

    Docker Swarm 是 Docker 原生的集群管理工具,可以輕松地將多個(gè) Docker 主機(jī)組成一個(gè)集群,實(shí)現(xiàn)服務(wù)的高可用性和負(fù)載均衡,以下是詳細(xì)的部署步驟,需要的朋友可以參考下
    2025-07-07
  • Docker內(nèi)如何更新Jenkins

    Docker內(nèi)如何更新Jenkins

    本文詳細(xì)介紹了如何在Docker中使用Jenkins,包括Jenkins的基本概念、準(zhǔn)備工作、下載和運(yùn)行Jenkins、通過docker-compose部署Jenkins以及更新Jenkins的步驟
    2024-11-11
  • 查詢Docker鏡像DockerFile的方法步驟

    查詢Docker鏡像DockerFile的方法步驟

    本文主要介紹了查詢Docker鏡像DockerFile的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 詳解Docker守護(hù)進(jìn)程的配置及日志

    詳解Docker守護(hù)進(jìn)程的配置及日志

    這篇文章主要介紹了詳解Docker守護(hù)進(jìn)程的配置及日志,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

环江| 瑞安市| 荔浦县| 上饶市| 平阳县| 嘉鱼县| 阿拉善左旗| 南华县| 托克托县| 桓仁| 靖江市| 花莲县| 舞钢市| 海安县| 商丘市| 宜州市| 廊坊市| 灌云县| 汶川县| 尼木县| 古丈县| 甘泉县| 静安区| 普宁市| 张北县| 定结县| 昌黎县| 万州区| 保靖县| 新乡市| 金湖县| 洪洞县| 邳州市| 金堂县| 安庆市| 中山市| 永济市| 温泉县| 汝州市| 孟州市| 怀化市|