亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Docker部署XXL-JOB的示例代碼

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

1. 引言

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

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

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

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

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

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

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

3.1 登錄 MySQL

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

mysql -u root -p

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

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

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

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

在這里插入圖片描述

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

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

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

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

在這里插入圖片描述

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

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)度類(lèi)型',
  `schedule_conf` varchar(128) DEFAULT NULL COMMENT '調(diào)度配置,值含義取決于調(diào)度類(lèi)型',
  `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '調(diào)度過(guò)期策略',
  `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類(lèi)型',
  `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è)逗號(hào)分隔',
  `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-無(wú)需告警、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類(lèi)型',
  `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í)行器名稱(chēng)',
  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '執(zhí)行器地址類(lèi)型:0=自動(dòng)注冊(cè)、1=手動(dòng)錄入',
  `address_list` text COMMENT '執(zhí)行器地址列表,多地址逗號(hào)分隔',
  `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 '賬號(hào)',
  `password` varchar(50) NOT NULL COMMENT '密碼',
  `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用戶(hù)、1-管理員',
  `permission` varchar(255) DEFAULT NULL COMMENT '權(quán)限:執(zhí)行器ID列表,多個(gè)逗號(hào)分割',
  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 '鎖名稱(chēng)',
  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, '測(cè)試任務(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 語(yǔ)句后,XXL-JOB 將擁有必要的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)任務(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ù)來(lái)確保 XXL-JOB 能夠正確連接到 MySQL 數(shù)據(jù)庫(kù),并且配置了日志存儲(chǔ)路徑。

在這里插入圖片描述

參數(shù)解析

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

4.3 常見(jiàn)問(wèn)題與調(diào)試

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

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

5. 配置 XXL-JOB

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

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

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

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

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

6. 驗(yàn)證部署

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

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

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

在這里插入圖片描述

7. 總結(jié)

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

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

相關(guān)文章

  • Docker 基礎(chǔ)之Dockerfile命令詳解

    Docker 基礎(chǔ)之Dockerfile命令詳解

    這篇文章主要介紹了Docker 基礎(chǔ)之Dockerfile命令,本文介紹 Dockerfile 的基本結(jié)構(gòu)及其支持的眾多指令,有興趣的可以了解一下
    2017-04-04
  • Docker容器命令執(zhí)行狀態(tài)碼的檢查與分析

    Docker容器命令執(zhí)行狀態(tài)碼的檢查與分析

    在 Docker 容器化技術(shù)日益普及的今天,容器的運(yùn)行狀態(tài)和健康檢查成為了運(yùn)維人員和開(kāi)發(fā)者關(guān)注的焦點(diǎn),了解如何在 Docker 容器中執(zhí)行命令并檢查其退出狀態(tài)碼,對(duì)于確保容器服務(wù)的穩(wěn)定性和可靠性至關(guān)重要,需要的朋友可以參考下
    2024-12-12
  • docker部署Nestjs的簡(jiǎn)單配置實(shí)現(xiàn)

    docker部署Nestjs的簡(jiǎn)單配置實(shí)現(xiàn)

    使用Docker部署NestJS應(yīng)用程序可以確保在不同的環(huán)境中運(yùn)行一致,并且避免了由于依賴(lài)關(guān)系或配置問(wèn)題導(dǎo)致的部署錯(cuò)誤,本文主要介紹了docker來(lái)部署Nestjs的簡(jiǎn)單配置,感興趣的可以了解一下
    2024-02-02
  • debian12安裝docker的實(shí)現(xiàn)步驟

    debian12安裝docker的實(shí)現(xiàn)步驟

    本文主要介紹了debian12安裝docker的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • Docker中部署Redis并掛載配置文件

    Docker中部署Redis并掛載配置文件

    本文主要介紹了Docker中部署Redis并掛載配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Docker制作MySQL鏡像并使用`/docker-entrypoint-initdb.d/`問(wèn)題

    Docker制作MySQL鏡像并使用`/docker-entrypoint-initdb.d/`問(wèn)題

    這篇文章主要介紹了Docker制作MySQL鏡像并使用`/docker-entrypoint-initdb.d/`問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker安裝MySql8并遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)

    Docker安裝MySql8并遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)

    本文主要介紹了Docker安裝MySql8并遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Docker?鏡像導(dǎo)入導(dǎo)出過(guò)程介紹

    Docker?鏡像導(dǎo)入導(dǎo)出過(guò)程介紹

    這篇文章主要介紹了Docker?鏡像導(dǎo)入導(dǎo)出過(guò)程,文章圍繞主題展開(kāi)詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • docker指令收集整理(收藏)

    docker指令收集整理(收藏)

    Docker 是一個(gè)基于Linux容器(LXC-linux container)的高級(jí)容器引擎,基于go語(yǔ)言開(kāi)發(fā),源代碼托管在 Github 上, 遵從Apache2.0協(xié)議開(kāi)源。這篇文章主要介紹了docker指令收集整理(收藏),需要的朋友可以參考下
    2017-02-02
  • Docker之修改/etc/default/docker 里的DOCKER_OPTS參數(shù)不生效問(wèn)題

    Docker之修改/etc/default/docker 里的DOCKER_OPTS參數(shù)不生效問(wèn)題

    這篇文章主要介紹了Docker之修改/etc/default/docker 里的DOCKER_OPTS參數(shù)不生效問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論