国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

xxl-Job分布式任務(wù)調(diào)度 入門

這篇具有很好參考價(jià)值的文章主要介紹了xxl-Job分布式任務(wù)調(diào)度 入門。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.概述

1.1 什么是任務(wù)調(diào)度

我們可以先思考一下業(yè)務(wù)場(chǎng)景的解決方案:

  • 某電商系統(tǒng)需要在每天上午10點(diǎn),下午3點(diǎn),晚上8點(diǎn)發(fā)放一批優(yōu)惠券。

  • 某銀行系統(tǒng)需要在信用卡到期還款日的前三天進(jìn)行短信提醒。

  • 某財(cái)務(wù)系統(tǒng)需要在每天凌晨0:10結(jié)算前一天的財(cái)務(wù)數(shù)據(jù),統(tǒng)計(jì)匯總。

  • 12306會(huì)根據(jù)車次的不同,設(shè)置某幾個(gè)時(shí)間點(diǎn)進(jìn)行分批放票。

以上業(yè)務(wù)場(chǎng)景的解決方案就是任務(wù)調(diào)度。

任務(wù)調(diào)度是指系統(tǒng)為了自動(dòng)完成特定任務(wù),在約定的特定時(shí)刻去執(zhí)行任務(wù)的過(guò)程。有了任務(wù)調(diào)度即可解放更多的人力,而是由系統(tǒng)自動(dòng)去執(zhí)行任務(wù)。

如何實(shí)現(xiàn)任務(wù)調(diào)度?

  • 多線程方式,結(jié)合sleep

  • JDK提供的API,例如:Timer、ScheduledExecutor

  • 框架,例如Quartz ,它是一個(gè)功能強(qiáng)大的任務(wù)調(diào)度框架,可以滿足更多更復(fù)雜的調(diào)度需求

  • spring task

入門案例

spring框架中默認(rèn)就支持了一個(gè)任務(wù)調(diào)度,springtask

每隔5s觸發(fā) 一個(gè)方法 : eat() { 每隔5s 開(kāi)始吃飯 我要變成一個(gè)胖子 }

(1)創(chuàng)建一個(gè)工程:springtask-test

pom文件

<dependencies>
 ? ?<dependency>
 ? ? ? ?<groupId>org.springframework.boot</groupId>
 ? ? ? ?<artifactId>spring-boot-starter-web</artifactId>
 ? ?</dependency>
</dependencies>

(2)引導(dǎo)類:

package com.itheima.task;
?
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
?
@SpringBootApplication
@EnableScheduling
public class TaskApplication {
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(TaskApplication.class,args);
 ?  }
}

(3)編寫案例

package com.itheima.task.job;
?
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
?
import java.util.Date;
?
@Component
public class HelloJob {
 ? ?@Scheduled(cron = "0/5 * * * * ?")
 ? ?public void eat(){
 ? ? ? ?System.out.println("5秒中吃一次飯,我想成為一個(gè)胖子"+new Date());
 ?  }
}

測(cè)試:?jiǎn)?dòng)項(xiàng)目,每隔5秒中會(huì)執(zhí)行一次eat方法

  • 集群狀態(tài)下各個(gè)服務(wù)都會(huì)執(zhí)行當(dāng)前任務(wù)

1.2 cron表達(dá)式

cron表達(dá)式是一個(gè)字符串, 用來(lái)設(shè)置定時(shí)規(guī)則, 由七部分組成, 每部分中間用空格隔開(kāi), 每部分的含義如下表所示:

組成部分 含義 取值范圍
第一部分 Seconds (秒) 0-59
第二部分 Minutes(分) 0-59
第三部分 Hours(時(shí)) 0-23
第四部分 Day-of-Month(天) 1-31
第五部分 Month(月) 0-11或JAN-DEC
第六部分 Day-of-Week(星期) 1-7(1表示星期日)或SUN-SAT
第七部分 Year(年) 可選 1970-2099

另外, cron表達(dá)式還可以包含一些特殊符號(hào)來(lái)設(shè)置更加靈活的定時(shí)規(guī)則, 如下表所示:

符號(hào) 含義
? 表示不確定的值。當(dāng)兩個(gè)子表達(dá)式其中一個(gè)被指定了值以后,為了避免沖突,需要將另外一個(gè)的值設(shè)為“?”。例如:想在每月20日觸發(fā)調(diào)度,不管20號(hào)是星期幾,只能用如下寫法:0 0 0 20 * ?,其中最后以為只能用“?”
* 代表所有可能的值
, 設(shè)置多個(gè)值,例如”26,29,33”表示在26分,29分和33分各自運(yùn)行一次任務(wù)
- 設(shè)置取值范圍,例如”5-20”,表示從5分到20分鐘每分鐘運(yùn)行一次任務(wù)
/ 設(shè)置頻率或間隔,如"1/15"表示從1分開(kāi)始,每隔15分鐘運(yùn)行一次任務(wù)
L 用于每月,或每周,表示每月的最后一天,或每個(gè)月的最后星期幾,例如"6L"表示"每月的最后一個(gè)星期五"
W 表示離給定日期最近的工作日,例如"15W"放在每月(day-of-month)上表示"離本月15日最近的工作日"
# 表示該月第幾個(gè)周X。例如”6#3”表示該月第3個(gè)周五

為了讓大家更熟悉cron表達(dá)式的用法, 接下來(lái)我們給大家列舉了一些例子, 如下表所示:

cron表達(dá)式 含義
*/5 * * * * ? 每隔5秒運(yùn)行一次任務(wù)
0 0 23 * * ? 每天23點(diǎn)運(yùn)行一次任務(wù)
0 0 1 1 * ? 每月1號(hào)凌晨1點(diǎn)運(yùn)行一次任務(wù)
0 0 23 L * ? 每月最后一天23點(diǎn)運(yùn)行一次任務(wù)
0 26,29,33 * * * ? 在26分、29分、33分運(yùn)行一次任務(wù)
0 0/30 9-17 * * ? 朝九晚五工作時(shí)間內(nèi)每半小時(shí)運(yùn)行一次任務(wù)
0 15 10 ? * 6#3 每月的第三個(gè)星期五上午10:15運(yùn)行一次任務(wù)

1.3 什么是分布式任務(wù)調(diào)度

當(dāng)前軟件的架構(gòu)已經(jīng)開(kāi)始向分布式架構(gòu)轉(zhuǎn)變,將單體結(jié)構(gòu)拆分為若干服務(wù),服務(wù)之間通過(guò)網(wǎng)絡(luò)交互來(lái)完成業(yè)務(wù)處理。在分布式架構(gòu)下,一個(gè)服務(wù)往往會(huì)部署多個(gè)實(shí)例來(lái)運(yùn)行我們的業(yè)務(wù),如果在這種分布式系統(tǒng)環(huán)境下運(yùn)行任務(wù)調(diào)度,我們稱之為分布式任務(wù)調(diào)度。

將任務(wù)調(diào)度程序分布式構(gòu)建,這樣就可以具有分布式系統(tǒng)的特點(diǎn),并且提高任務(wù)的調(diào)度處理能力:

1、并行任務(wù)調(diào)度

并行任務(wù)調(diào)度實(shí)現(xiàn)靠多線程,如果有大量任務(wù)需要調(diào)度,此時(shí)光靠多線程就會(huì)有瓶頸了,因?yàn)橐慌_(tái)計(jì)算機(jī)CPU的處理能力是有限的。

如果將任務(wù)調(diào)度程序分布式部署,每個(gè)結(jié)點(diǎn)還可以部署為集群,這樣就可以讓多臺(tái)計(jì)算機(jī)共同去完成任務(wù)調(diào)度,我們可以將任務(wù)分割為若干個(gè)分片,由不同的實(shí)例并行執(zhí)行,來(lái)提高任務(wù)調(diào)度的處理效率。

2、高可用

若某一個(gè)實(shí)例宕機(jī),不影響其他實(shí)例來(lái)執(zhí)行任務(wù)。

3、彈性擴(kuò)容

當(dāng)集群中增加實(shí)例就可以提高并執(zhí)行任務(wù)的處理效率。

4、任務(wù)管理與監(jiān)測(cè)

對(duì)系統(tǒng)中存在的所有定時(shí)任務(wù)進(jìn)行統(tǒng)一的管理及監(jiān)測(cè)。讓開(kāi)發(fā)人員及運(yùn)維人員能夠時(shí)刻了解任務(wù)執(zhí)行情況,從而做出快速的應(yīng)急處理響應(yīng)。

分布式任務(wù)調(diào)度面臨的問(wèn)題:

當(dāng)任務(wù)調(diào)度以集群方式部署,同一個(gè)任務(wù)調(diào)度可能會(huì)執(zhí)行多次,例如:電商系統(tǒng)定期發(fā)放優(yōu)惠券,就可能重復(fù)發(fā)放優(yōu)惠券,對(duì)公司造成損失,信用卡還款提醒就會(huì)重復(fù)執(zhí)行多次,給用戶造成煩惱,所以我們需要控制相同的任務(wù)在多個(gè)運(yùn)行實(shí)例上只執(zhí)行一次。常見(jiàn)解決方案:

  • 分布式鎖,多個(gè)實(shí)例在任務(wù)執(zhí)行前首先需要獲取鎖,如果獲取失敗那么就證明有其他服務(wù)已經(jīng)在運(yùn)行,如果獲取成功那么證明沒(méi)有服務(wù)在運(yùn)行定時(shí)任務(wù),那么就可以執(zhí)行。

  • ZooKeeper選舉,利用ZooKeeper對(duì)Leader實(shí)例執(zhí)行定時(shí)任務(wù),執(zhí)行定時(shí)任務(wù)的時(shí)候判斷自己是否是Leader,如果不是則不執(zhí)行,如果是則執(zhí)行業(yè)務(wù)邏輯,這樣也能達(dá)到目的。

1.4 xxl-Job簡(jiǎn)介

針對(duì)分布式任務(wù)調(diào)度的需求,市場(chǎng)上出現(xiàn)了很多的產(chǎn)品:

1) TBSchedule:淘寶推出的一款非常優(yōu)秀的高性能分布式調(diào)度框架,目前被應(yīng)用于阿里、京東、支付寶、國(guó)美等很多互聯(lián)網(wǎng)企業(yè)的流程調(diào)度系統(tǒng)中。但是已經(jīng)多年未更新,文檔缺失嚴(yán)重,缺少維護(hù)。

2) XXL-Job:大眾點(diǎn)評(píng)的分布式任務(wù)調(diào)度平臺(tái),是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái), 其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。

3)Elastic-job:當(dāng)當(dāng)網(wǎng)借鑒TBSchedule并基于quartz 二次開(kāi)發(fā)的彈性分布式任務(wù)調(diào)度系統(tǒng),功能豐富強(qiáng)大,采用zookeeper實(shí)現(xiàn)分布式協(xié)調(diào),具有任務(wù)高可用以及分片功能。

4)Saturn: 唯品會(huì)開(kāi)源的一個(gè)分布式任務(wù)調(diào)度平臺(tái),基于Elastic-job,可以全域統(tǒng)一配置,統(tǒng)一監(jiān) 控,具有任務(wù)高可用以及分片功能。

XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。

源碼地址:xxl-job: 一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。

文檔地址:分布式任務(wù)調(diào)度平臺(tái)XXL-JOB

特性

  • 簡(jiǎn)單靈活 提供Web頁(yè)面對(duì)任務(wù)進(jìn)行管理,管理系統(tǒng)支持用戶管理、權(quán)限控制; 支持容器部署; 支持通過(guò)通用HTTP提供跨平臺(tái)任務(wù)調(diào)度;

  • 豐富的任務(wù)管理功能 支持頁(yè)面對(duì)任務(wù)CRUD操作; 支持在頁(yè)面編寫腳本任務(wù)、命令行任務(wù)、Java代碼任務(wù)并執(zhí)行; 支持任務(wù)級(jí)聯(lián)編排,父任務(wù)執(zhí)行結(jié)束后觸發(fā)子任務(wù)執(zhí)行; 支持設(shè)置指定任務(wù)執(zhí)行節(jié)點(diǎn)路由策略,包括輪詢、隨機(jī)、廣播、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等; 支持Cron方式、任務(wù)依賴、調(diào)度中心API接口方式觸發(fā)任務(wù)執(zhí)行

  • 高性能 任務(wù)調(diào)度流程全異步化設(shè)計(jì)實(shí)現(xiàn),如異步調(diào)度、異步運(yùn)行、異步回調(diào)等,有效對(duì)密集調(diào)度進(jìn)行流量削峰;

  • 高可用 任務(wù)調(diào)度中心、任務(wù)執(zhí)行節(jié)點(diǎn)均 集群部署,支持動(dòng)態(tài)擴(kuò)展、故障轉(zhuǎn)移 支持任務(wù)配置路由故障轉(zhuǎn)移策略,執(zhí)行器節(jié)點(diǎn)不可用是自動(dòng)轉(zhuǎn)移到其他節(jié)點(diǎn)執(zhí)行 支持任務(wù)超時(shí)控制、失敗重試配置 支持任務(wù)處理阻塞策略:調(diào)度當(dāng)任務(wù)執(zhí)行節(jié)點(diǎn)忙碌時(shí)來(lái)不及執(zhí)行任務(wù)的處理策略,包括:串行、拋棄、覆蓋策略

  • 易于監(jiān)控運(yùn)維 支持設(shè)置任務(wù)失敗郵件告警,預(yù)留接口支持短信、釘釘告警; 支持實(shí)時(shí)查看任務(wù)執(zhí)行運(yùn)行數(shù)據(jù)統(tǒng)計(jì)圖表、任務(wù)進(jìn)度監(jiān)控?cái)?shù)據(jù)、任務(wù)完整執(zhí)行日志;

2.XXL-Job

在分布式架構(gòu)下,通過(guò)XXL-Job實(shí)現(xiàn)定時(shí)任務(wù)

xxl-Job分布式任務(wù)調(diào)度 入門

調(diào)度中心:負(fù)責(zé)管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請(qǐng)求,自身不承擔(dān)業(yè)務(wù)代碼。

任務(wù)執(zhí)行器:負(fù)責(zé)接收調(diào)度請(qǐng)求并執(zhí)行任務(wù)邏輯。

任務(wù):專注于任務(wù)的處理。

調(diào)度中心會(huì)發(fā)出調(diào)度請(qǐng)求,任務(wù)執(zhí)行器接收到請(qǐng)求之后會(huì)去執(zhí)行任務(wù),任務(wù)則專注于任務(wù)業(yè)務(wù)的處理。

2.1 環(huán)境搭建(可選)

2.1.1 調(diào)度中心環(huán)境要求

  • Maven3+

  • Jdk1.8+

  • Mysql5.7+

2.1.2 源碼倉(cāng)庫(kù)地址

源碼倉(cāng)庫(kù)地址 Release Download
GitHub - xuxueli/xxl-job: A distributed task scheduling framework.(分布式任務(wù)調(diào)度平臺(tái)XXL-JOB) Download
xxl-job: 一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。 Download

也可以使用資料文件夾中的源碼

2.1.3 初始化“調(diào)度數(shù)據(jù)庫(kù)”

請(qǐng)下載項(xiàng)目源碼并解壓,獲取 “調(diào)度數(shù)據(jù)庫(kù)初始化SQL腳本” 并執(zhí)行即可。

位置:/xxl-job/doc/db/tables_xxl_job.sql 共8張表

xxl-Job分布式任務(wù)調(diào)度 入門?

- xxl_job_lock:任務(wù)調(diào)度鎖表;
- xxl_job_group:執(zhí)行器信息表,維護(hù)任務(wù)執(zhí)行器信息;
- xxl_job_info:調(diào)度擴(kuò)展信息表: 用于保存XXL-JOB調(diào)度任務(wù)的擴(kuò)展信息,如任務(wù)分組、任務(wù)名、機(jī)器地址、執(zhí)行器、執(zhí)行入?yún)⒑蛨?bào)警郵件等等;
- xxl_job_log:調(diào)度日志表: 用于保存XXL-JOB任務(wù)調(diào)度的歷史信息,如調(diào)度結(jié)果、執(zhí)行結(jié)果、調(diào)度入?yún)?、調(diào)度機(jī)器和執(zhí)行器等等;
- xxl_job_logglue:任務(wù)GLUE日志:用于保存GLUE更新歷史,用于支持GLUE的版本回溯功能;
- xxl_job_registry:執(zhí)行器注冊(cè)表,維護(hù)在線的執(zhí)行器和調(diào)度中心機(jī)器地址信息;
- xxl_job_user:系統(tǒng)用戶表;

調(diào)度中心支持集群部署,集群情況下各節(jié)點(diǎn)務(wù)必連接同一個(gè)mysql實(shí)例;

如果mysql做主從,調(diào)度中心集群節(jié)點(diǎn)務(wù)必強(qiáng)制走主庫(kù);

2.1.4 配置部署“調(diào)度中心”

調(diào)度中心項(xiàng)目:xxl-job-admin

作用:統(tǒng)一管理任務(wù)調(diào)度平臺(tái)上調(diào)度任務(wù),負(fù)責(zé)觸發(fā)調(diào)度執(zhí)行,并且提供任務(wù)管理平臺(tái)。

步驟一:調(diào)度中心配置

調(diào)度中心配置文件地址:/xxl-job/xxl-job-admin/src/main/resources/application.properties

數(shù)據(jù)庫(kù)的連接信息修改為自己的數(shù)據(jù)庫(kù)

### web
server.port=8888
server.servlet.context-path=/xxl-job-admin
?
### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false
?
### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
?
### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
?
### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model
?
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
?
### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
?
### xxl-job, email
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
?
### xxl-job, access token
xxl.job.accessToken=
?
### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN
?
## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
?
### xxl-job, log retention days
xxl.job.logretentiondays=30

步驟二:部署項(xiàng)目

如果已經(jīng)正確進(jìn)行上述配置,可將項(xiàng)目編譯打包部署。

啟動(dòng)方式一:這是一個(gè)springboot項(xiàng)目,可以在idea中直接啟動(dòng),不推薦使用

啟動(dòng)方式二:

  • 執(zhí)行maven打包命令:package

  • 打完包以后,從項(xiàng)目的target目錄中找到j(luò)ar包拷貝到不帶空格和中文的目錄下

  • 執(zhí)行以下命令,啟動(dòng)項(xiàng)目

java -jar xxl-job-admin-2.2.0-SNAPSHOT.jar

調(diào)度中心訪問(wèn)地址:http://localhost:8888/xxl-job-admin (該地址執(zhí)行器將會(huì)使用到,作為回調(diào)地址)

啟動(dòng)方式三:docker部署微服務(wù)

  • 初始化數(shù)據(jù)庫(kù)

    位置:/xxl-job/doc/db/tables_xxl_job.sql 共8張表

  • 創(chuàng)建容器

    docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.200.130:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root" ?-p 8888:8080 -v /tmp:/data/applogs --name xxljob --privileged=true ?-id xuxueli/xxl-job-admin:2.2.0

默認(rèn)登錄賬號(hào) “admin / 123456”, 登錄后運(yùn)行界面如下圖所示。

xxl-Job分布式任務(wù)調(diào)度 入門

2.2 入門案例編寫

2.2.1 配置執(zhí)行器

在任務(wù)調(diào)度中心,點(diǎn)擊進(jìn)入"執(zhí)行器管理"界面, 如下圖:

xxl-Job分布式任務(wù)調(diào)度 入門?

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-438653.html

1、此處的AppName,會(huì)在創(chuàng)建任務(wù)時(shí)被選擇,每個(gè)任務(wù)必然要選擇一個(gè)執(zhí)行器。 2、"執(zhí)行器列表" 中顯示在線的執(zhí)行器列表, 支持編輯刪除。

以下是執(zhí)行器的屬性說(shuō)明:

屬性名稱 說(shuō)明
AppName 是每個(gè)執(zhí)行器集群的唯一標(biāo)示AppName, 執(zhí)行器會(huì)周期性以AppName為對(duì)象進(jìn)行自動(dòng)注冊(cè)??赏ㄟ^(guò)該配置自動(dòng)發(fā)現(xiàn)注冊(cè)成功的執(zhí)行器, 供任務(wù)調(diào)度時(shí)使用;
名稱 執(zhí)行器的名稱, 因?yàn)锳ppName限制字母數(shù)字等組成,可讀性不強(qiáng), 名稱為了提高執(zhí)行器的可讀性;
排序 執(zhí)行器的排序, 系統(tǒng)中需要執(zhí)行器的地方,如任務(wù)新增, 將會(huì)按照該排序讀取可用的執(zhí)行器列表;
注冊(cè)方式 調(diào)度中心獲取執(zhí)行器地址的方式;
機(jī)器地址 注冊(cè)方式為"手動(dòng)錄入"時(shí)有效,支持人工維護(hù)執(zhí)行器的地址信息;

具體操作:

(1)新增執(zhí)行器:

xxl-Job分布式任務(wù)調(diào)度 入門

xxl-Job分布式任務(wù)調(diào)度 入門?

2.2.2 在調(diào)度中心新建任務(wù)

在任務(wù)管理->新建,填寫以下內(nèi)容

xxl-Job分布式任務(wù)調(diào)度 入門?

  • 執(zhí)行器:任務(wù)的綁定的執(zhí)行器,任務(wù)觸發(fā)調(diào)度時(shí)將會(huì)自動(dòng)發(fā)現(xiàn)注冊(cè)成功的執(zhí)行器, 實(shí)現(xiàn)任務(wù)自動(dòng)發(fā)現(xiàn)功能; 另一方面也可以方便的進(jìn)行任務(wù)分組。每個(gè)任務(wù)必須綁定一個(gè)執(zhí)行器, 可在 "執(zhí)行器管理" 進(jìn)行設(shè)置

  • 任務(wù)描述:任務(wù)的描述信息,便于任務(wù)管理

    路由策略:當(dāng)執(zhí)行器集群部署時(shí),提供豐富的路由策略,包括

    • FIRST(第一個(gè)):固定選擇第一個(gè)機(jī)器;

    • LAST(最后一個(gè)):固定選擇最后一個(gè)機(jī)器;

    • ROUND(輪詢):

    • RANDOM(隨機(jī)):隨機(jī)選擇在線的機(jī)器;

    • CONSISTENT_HASH(一致性HASH):每個(gè)任務(wù)按照Hash算法固定選擇某一臺(tái)機(jī)器,且所有任務(wù)均勻散列在不同機(jī)器上。

    • LEAST_FREQUENTLY_USED(最不經(jīng)常使用):使用頻率最低的機(jī)器優(yōu)先被選舉;

    • LEAST_RECENTLY_USED(最近最久未使用):最久為使用的機(jī)器優(yōu)先被選舉;

    • FAILOVER(故障轉(zhuǎn)移):按照順序依次進(jìn)行心跳檢測(cè),第一個(gè)心跳檢測(cè)成功的機(jī)器選定為目標(biāo)執(zhí)行器并發(fā)起調(diào)度;

    • BUSYOVER(忙碌轉(zhuǎn)移):按照順序依次進(jìn)行空閑檢測(cè),第一個(gè)空閑檢測(cè)成功的機(jī)器選定為目標(biāo)執(zhí)行器并發(fā)起調(diào)度;

    • SHARDING_BROADCAST(分片廣播):廣播觸發(fā)對(duì)應(yīng)集群中所有機(jī)器執(zhí)行一次任務(wù),同時(shí)系統(tǒng)自動(dòng)傳遞分片參數(shù);可根據(jù)分片參數(shù)開(kāi)發(fā)分片任務(wù);

  • Cron:觸發(fā)任務(wù)執(zhí)行的Cron表達(dá)式;

  • 運(yùn)行模式:

    • BEAN模式:任務(wù)以JobHandler方式維護(hù)在執(zhí)行器端;需要結(jié)合 "JobHandler" 屬性匹配執(zhí)行器中任務(wù);

    • GLUE模式(Java):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段繼承自IJobHandler的Java類代碼并 "groovy" 源碼方式維護(hù),它在執(zhí)行器項(xiàng)目中運(yùn)行,可使用@Resource/@Autowire注入執(zhí)行器里中的其他服務(wù);

    • GLUE模式(Shell):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "shell" 腳本;

    • GLUE模式(Python):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "python" 腳本;

    • GLUE模式(PHP):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "php" 腳本;

    • GLUE模式(NodeJS):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "nodejs" 腳本;

    • GLUE模式(PowerShell):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "PowerShell" 腳本;

  • JobHandler:運(yùn)行模式為 "BEAN模式" 時(shí)生效,對(duì)應(yīng)執(zhí)行器中新開(kāi)發(fā)的JobHandler類“@JobHandler”注解自定義的value值;

  • 阻塞處理策略:調(diào)度過(guò)于密集執(zhí)行器來(lái)不及處理時(shí)的處理策略;

    • 單機(jī)串行(默認(rèn)):調(diào)度請(qǐng)求進(jìn)入單機(jī)執(zhí)行器后,調(diào)度請(qǐng)求進(jìn)入FIFO隊(duì)列并以串行方式運(yùn)行;

    • 丟棄后續(xù)調(diào)度:調(diào)度請(qǐng)求進(jìn)入單機(jī)執(zhí)行器后,發(fā)現(xiàn)執(zhí)行器存在運(yùn)行的調(diào)度任務(wù),本次請(qǐng)求將會(huì)被丟棄并標(biāo)記為失敗;

    • 覆蓋之前調(diào)度:調(diào)度請(qǐng)求進(jìn)入單機(jī)執(zhí)行器后,發(fā)現(xiàn)執(zhí)行器存在運(yùn)行的調(diào)度任務(wù),將會(huì)終止運(yùn)行中的調(diào)度任務(wù)并清空隊(duì)列,然后運(yùn)行本地調(diào)度任務(wù);

  • 子任務(wù):每個(gè)任務(wù)都擁有一個(gè)唯一的任務(wù)ID(任務(wù)ID可以從任務(wù)列表獲取),當(dāng)本任務(wù)執(zhí)行結(jié)束并且執(zhí)行成功時(shí),將會(huì)觸發(fā)子任務(wù)ID所對(duì)應(yīng)的任務(wù)的一次主動(dòng)調(diào)度。

  • 任務(wù)超時(shí)時(shí)間:支持自定義任務(wù)超時(shí)時(shí)間,任務(wù)運(yùn)行超時(shí)將會(huì)主動(dòng)中斷任務(wù);

  • 失敗重試次數(shù);支持自定義任務(wù)失敗重試次數(shù),當(dāng)任務(wù)失敗時(shí)將會(huì)按照預(yù)設(shè)的失敗重試次數(shù)主動(dòng)進(jìn)行重試;

  • 報(bào)警郵件:任務(wù)調(diào)度失敗時(shí)郵件通知的郵箱地址,支持配置多郵箱地址,配置多個(gè)郵箱地址時(shí)用逗號(hào)分隔;

  • 負(fù)責(zé)人:任務(wù)的負(fù)責(zé)人;

  • 執(zhí)行參數(shù):任務(wù)執(zhí)行所需的參數(shù);

2.2.3 搭建springboot項(xiàng)目

新建項(xiàng)目:xxljob-test

(1)pom文件

<dependencies>
? ? <dependency>
? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? <artifactId>spring-boot-starter-web</artifactId>
? ? </dependency>
? ? <!-- xxl-job -->
? ? <dependency>
? ? ? ? <groupId>com.xuxueli</groupId>
? ? ? ? <artifactId>xxl-job-core</artifactId>
? ? ? ? <version>2.2.0</version>
? ? </dependency>
</dependencies>

注意:如果項(xiàng)目中沒(méi)有找到xxl-job-core這個(gè)依賴,需要把這個(gè)依賴安裝到本地的maven倉(cāng)庫(kù)

?xxl-Job分布式任務(wù)調(diào)度 入門

?

(2)配置有兩個(gè),一個(gè)是application.properties,另外一個(gè)是日志配置:logback.xml

application.properties

# web port
server.port=${port:8801}
# no web
#spring.main.web-environment=false
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://localhost:8888/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=
### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=
xxl.job.executor.port=${executor.port:9999}
### xxl-job executor log-path 創(chuàng)建文件路徑 D:/logs
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30
?

(2)引導(dǎo)類:

package com.itheima.xxljob;
?
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
?
@SpringBootApplication
public class XxlJobApplication {
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(XxlJobApplication.class,args);
 ?  }
}

2.2.4 添加xxl-job配置

添加配置類:

這個(gè)類主要是創(chuàng)建了任務(wù)執(zhí)行器,參考官方案例編寫,無(wú)須改動(dòng)

package com.heima.test.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
 ? ?private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
 ? ?@Value("${xxl.job.admin.addresses}")
 ? ?private String adminAddresses;
 ? ?@Value("${xxl.job.accessToken}")
 ? ?private String accessToken;
 ? ?@Value("${xxl.job.executor.appname}")
 ? ?private String appName;
 ? ?@Value("${xxl.job.executor.address}")
 ? ?private String address;
 ? ?@Value("${xxl.job.executor.ip}")
 ? ?private String ip;
 ? ?@Value("${xxl.job.executor.port}")
 ? ?private int port;
 ? ?@Value("${xxl.job.executor.logpath}")
 ? ?private String logPath;
 ? ?@Value("${xxl.job.executor.logretentiondays}")
 ? ?private int logRetentionDays;
 ? ?@Bean
 ? ?public XxlJobSpringExecutor xxlJobExecutor() {
 ? ? ? ?logger.info(">>>>>>>>>>> xxl-job config init.");
 ? ? ? ?XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
 ? ? ? ?xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
 ? ? ? ?xxlJobSpringExecutor.setAppname(appName);
 ? ? ? ?xxlJobSpringExecutor.setAddress(address);
 ? ? ? ?xxlJobSpringExecutor.setIp(ip);
 ? ? ? ?xxlJobSpringExecutor.setPort(port);
 ? ? ? ?xxlJobSpringExecutor.setAccessToken(accessToken);
 ? ? ? ?xxlJobSpringExecutor.setLogPath(logPath);
 ? ? ? ?xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
 ? ? ? ?return xxlJobSpringExecutor;
 ?  }
}

2.2.5 創(chuàng)建任務(wù)

package com.itheima.xxljob.job;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;


@Component
public class HelloJob {

? ? @Value("${server.port}")
? ? private String appPort;

? ? @XxlJob("helloJob")
? ? public ReturnT<String> hello(String param) throws Exception {
? ? ? ? System.out.println("helloJob:"+ LocalDateTime.now()+",端口號(hào)"+appPort);
? ? ? ? return ReturnT.SUCCESS;
? ? }
}
?

@XxlJob("helloJob")這個(gè)一定要與調(diào)度中心新建任務(wù)的JobHandler的值保持一致,如下圖:

xxl-Job分布式任務(wù)調(diào)度 入門

2.2.6 測(cè)試

(1)首先啟動(dòng)調(diào)度中心

(2)啟動(dòng)xxljob-test項(xiàng)目,為了展示更好的效果,可以同時(shí)啟動(dòng)三個(gè)項(xiàng)目,用同一個(gè)JobHandler,查看處理方式。

在啟動(dòng)多個(gè)項(xiàng)目的時(shí)候,端口需要切換,連接xxl-job的執(zhí)行器端口不同相同

服務(wù)一:默認(rèn)啟動(dòng)8801端口,執(zhí)行器端口為9999

idea中不用其他配置,直接啟動(dòng)項(xiàng)目即可

服務(wù)二:項(xiàng)目端口:8802,執(zhí)行器端口:9998

idea配置如下:

  • 編輯配置,Edit Configurations...

xxl-Job分布式任務(wù)調(diào)度 入門?

xxl-Job分布式任務(wù)調(diào)度 入門?

?

(3)測(cè)試效果

三個(gè)項(xiàng)目啟動(dòng)后,可以查看到是輪詢的方式分別去執(zhí)行當(dāng)前調(diào)度任務(wù)。

2.3 廣播任務(wù)和動(dòng)態(tài)分片

2.3.1 什么是作業(yè)分片

作業(yè)分片是指任務(wù)的分布式執(zhí)行,需要將一個(gè)任務(wù)拆分為多個(gè)獨(dú)立的任務(wù)項(xiàng),然后由分布式的應(yīng)用實(shí)例 分別執(zhí)行某一個(gè)或幾個(gè)分片項(xiàng)。

xxl-Job分布式任務(wù)調(diào)度 入門

2.3.2 XXL-JOB分片

執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇”分片廣播”情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)對(duì)應(yīng)集群中所有執(zhí)行器執(zhí)行一次任務(wù),同時(shí)系統(tǒng)自動(dòng)傳遞分片參數(shù);可根據(jù)分片參數(shù)開(kāi)發(fā)分片任務(wù);

“分片廣播” 以執(zhí)行器為維度進(jìn)行分片,支持動(dòng)態(tài)擴(kuò)容執(zhí)行器集群從而動(dòng)態(tài)增加分片數(shù)量,協(xié)同進(jìn)行業(yè)務(wù)處理;在進(jìn)行大數(shù)據(jù)量業(yè)務(wù)操作時(shí)可顯著提升任務(wù)處理能力和速度。

“分片廣播” 和普通任務(wù)開(kāi)發(fā)流程一致,不同之處在于可以獲取分片參數(shù),獲取分片參數(shù)進(jìn)行分片業(yè)務(wù)處理。

xxl-Job分布式任務(wù)調(diào)度 入門?

2.3.3 XXL-JOB支持分片的好處

  • 分片項(xiàng)與業(yè)務(wù)處理解耦 XXL-JOB并不直接提供數(shù)據(jù)處理的功能,框架只會(huì)將分片項(xiàng)分配至各個(gè)運(yùn)行中的作業(yè)服務(wù)器,開(kāi)發(fā)者需 要自行處理分片項(xiàng)與真實(shí)數(shù)據(jù)的對(duì)應(yīng)關(guān)系。

  • 最大限度利用資源 基于業(yè)務(wù)需求配置合理數(shù)量的執(zhí)行器服務(wù),合理設(shè)置分片,作業(yè)將會(huì)最大限度合理的利用分布式資源。

2.3.4 適用場(chǎng)景

  • 分片任務(wù)場(chǎng)景:10個(gè)執(zhí)行器的集群來(lái)處理10w條數(shù)據(jù),每臺(tái)機(jī)器只需要處理1w條數(shù)據(jù),耗時(shí)降低10倍;

  • 廣播任務(wù)場(chǎng)景:廣播執(zhí)行器機(jī)器運(yùn)行shell腳本、廣播集群節(jié)點(diǎn)進(jìn)行緩存更新等

2.3.5 分片廣播案例演示

目標(biāo):實(shí)現(xiàn)XXL-JOB作業(yè)分片的演示

方案分析:規(guī)劃一個(gè)任務(wù),兩個(gè)分片,對(duì)應(yīng)兩個(gè)執(zhí)行器,每個(gè)分片處理一部分任務(wù)。

實(shí)現(xiàn)步驟:

  • 創(chuàng)建分片執(zhí)行器

xxl-Job分布式任務(wù)調(diào)度 入門?

創(chuàng)建任務(wù)

指定剛才創(chuàng)建的分片執(zhí)行器,在路由策略這一欄選擇分片廣播

xxl-Job分布式任務(wù)調(diào)度 入門?

  • 分片廣播代碼

    分片參數(shù)屬性說(shuō)明:

    • index:當(dāng)前分片序號(hào)(從0開(kāi)始),執(zhí)行器集群列表中當(dāng)前執(zhí)行器的序號(hào);

    • total:總分片數(shù),執(zhí)行器集群的總機(jī)器數(shù)量;

    目前有一萬(wàn)條數(shù)據(jù),使用兩個(gè)分片同時(shí)執(zhí)行

    /**
     ? ? * 2、分片廣播任務(wù)
     ? ? */
    @XxlJob("shardingJobHandler")
    public ReturnT<String> shardingJobHandler(String param) throws Exception {
    ?
     ? ?// 分片參數(shù)
     ? ?ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
     ? ?XxlJobLogger.log("分片參數(shù):當(dāng)前分片序號(hào) = {}, 總分片數(shù) = {}", shardingVO.getIndex(), shardingVO.getTotal());
    ?
     ? ?List<Integer> list = getList();
     ? ?for (Integer integer : list) {
     ? ? ? ?if(integer % shardingVO.getTotal() == shardingVO.getIndex()){
     ? ? ? ? ? ?System.out.println("第"+shardingVO.getIndex()+"分片執(zhí)行,執(zhí)行數(shù)據(jù)為:"+integer);
     ? ? ?  }
     ?  }
    ?
     ? ?return ReturnT.SUCCESS;
    }
    ?
    public static List<Integer> getList(){
     ? ?List<Integer> list = new ArrayList<>();
     ? ?for (int i = 0; i < 10000 ; i++) {
     ? ? ? ?list.add(i);
     ?  }
     ? ?return list;
    }

結(jié)論:

  • 如果沒(méi)有設(shè)定分片的執(zhí)行邏輯,默認(rèn)情況下是廣播形式執(zhí)行,即集群中的每一個(gè)節(jié)點(diǎn)都會(huì)執(zhí)行任務(wù)

  • 如果設(shè)定了分片執(zhí)行邏輯,則會(huì)把任務(wù)劃分到執(zhí)行器的集群中執(zhí)行

?

到了這里,關(guān)于xxl-Job分布式任務(wù)調(diào)度 入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【分布式任務(wù)調(diào)度】XXL-JOB的任務(wù)調(diào)度實(shí)現(xiàn)原理(四)

    【分布式任務(wù)調(diào)度】XXL-JOB的任務(wù)調(diào)度實(shí)現(xiàn)原理(四)

    XXL-JOB專題歷史文章列表: XXL-JOB調(diào)度中心集群部署配置(一) XXL-JOB執(zhí)行器配置及定時(shí)任務(wù)的創(chuàng)建(二) XXL-JOB調(diào)度中心對(duì)執(zhí)行器的上下線感知實(shí)現(xiàn)原理(三) 本篇的主要內(nèi)容是XXL-JOB的任務(wù)調(diào)度流程及其實(shí)現(xiàn)原理,包含了兩個(gè)部分: 調(diào)度中心如何進(jìn)行任務(wù)調(diào)度 執(zhí)行器執(zhí)行任

    2024年02月16日
    瀏覽(27)
  • Java -- XXL-JOB分布式任務(wù)調(diào)度平臺(tái)

    Java -- XXL-JOB分布式任務(wù)調(diào)度平臺(tái)

    XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用 xxl是xxl-job的開(kāi)發(fā)者大眾點(diǎn)評(píng)的【許雪里】名稱的拼音開(kāi)頭 官網(wǎng)地址 分布式任務(wù)調(diào)度平臺(tái)XXL-JOB 文檔地址 中文文檔 English Docu

    2024年02月11日
    瀏覽(20)
  • 【分布式任務(wù)調(diào)度】(一)XXL-JOB調(diào)度中心集群部署配置

    【分布式任務(wù)調(diào)度】(一)XXL-JOB調(diào)度中心集群部署配置

    XXL-JOB是一款輕量級(jí)的分布式任務(wù)調(diào)度中間件,默認(rèn)支持6000個(gè)定時(shí)任務(wù),如果生產(chǎn)環(huán)境的任務(wù)數(shù)量在這個(gè)范圍內(nèi),可以選擇使用 XXL-JOB。 XXL-JOB由Quartz這款老牌的任務(wù)調(diào)度中間件演化而來(lái),相對(duì)來(lái)說(shuō),具備以下優(yōu)勢(shì): 操作更簡(jiǎn)單,學(xué)習(xí)成本更低 使用異步化調(diào)度,性能更好 有配

    2024年02月16日
    瀏覽(24)
  • XXL-JOB中間件【實(shí)現(xiàn)分布式任務(wù)調(diào)度】

    XXL-JOB中間件【實(shí)現(xiàn)分布式任務(wù)調(diào)度】

    目錄 1:XXL-JOB介紹 2:搭建XXL-JOB 2.1:調(diào)度中心 2.2:執(zhí)行器 2.3:執(zhí)行任務(wù) 3:分片廣播 XXL-JOB是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。 官網(wǎng):https://www.xuxueli.com/xxl-

    2024年02月03日
    瀏覽(20)
  • spring boot + xxl-job 分布式任務(wù)調(diào)度

    spring boot + xxl-job 分布式任務(wù)調(diào)度

    1、任務(wù)調(diào)度 1.1、什么是任務(wù)調(diào)度 我們可以先思考一下下面業(yè)務(wù)場(chǎng)景的解決方案: 某電商系統(tǒng)需要在每天上午10點(diǎn),下午3點(diǎn),晚上8點(diǎn)發(fā)放一批優(yōu)惠券。 某財(cái)務(wù)系統(tǒng)需要在每天上午10點(diǎn)前結(jié)算前一天的賬單數(shù)據(jù),統(tǒng)計(jì)匯總。 某電商平臺(tái)每天凌晨3點(diǎn),要對(duì)訂單中的無(wú)效訂單進(jìn)行

    2024年02月09日
    瀏覽(29)
  • 初識(shí)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái) xxl-job

    初識(shí)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái) xxl-job

    大家好,這里是 Rocky 編程日記 ,喜歡后端架構(gòu)及中間件源碼,目前正在閱讀 xxl-job 源碼。同時(shí)也把自己學(xué)習(xí)該 xxl-job 筆記,代碼分享出來(lái),供大家學(xué)習(xí)交流,如若筆記中有不對(duì)的地方,那一定是當(dāng)時(shí)我的理解還不夠,希望你能及時(shí)提出。 如果對(duì)于該筆記存在很多疑惑,歡迎

    2024年02月10日
    瀏覽(2161)
  • 【手把手】分布式定時(shí)任務(wù)調(diào)度解析之xxl-job

    【手把手】分布式定時(shí)任務(wù)調(diào)度解析之xxl-job

    在之前我寫的講解Quartz中有介紹過(guò),Quartz有差不多二十年的歷史,調(diào)度模型已經(jīng)非常成熟了,而且很容易集成到Spring中去,用來(lái)執(zhí)行業(yè)務(wù)任務(wù)是一個(gè)很好的選擇。但是越早的設(shè)計(jì)存在的問(wèn)題也越明顯,比如: 1、調(diào)度邏輯(Scheduler)和任務(wù)類耦合在同一個(gè)項(xiàng)目中,隨著調(diào)度任

    2024年01月19日
    瀏覽(20)
  • 基于docker的分布式任務(wù)調(diào)度系統(tǒng)xxl-job搭建

    基于docker的分布式任務(wù)調(diào)度系統(tǒng)xxl-job搭建

    本文所使用的操作系統(tǒng)為: CentOS-7-x86_64-DVD-2009 xxl-job 依賴 mysql,所以必須要安裝mysql才行! 訪問(wèn)以下鏈接:https://hub.docker.com/_/mysql/ 尋找自己需要的MySQL版本拉取即可 1.下載鏡像 這里未指定版本號(hào),默認(rèn)拉取的是最新MySQL鏡像 2.導(dǎo)入zip包 下載xxljob項(xiàng)目,查看releases版本 https:

    2024年02月20日
    瀏覽(21)
  • 分布式任務(wù)調(diào)度平臺(tái)XXL-JOB學(xué)習(xí)筆記-helloworld運(yùn)行

    分布式任務(wù)調(diào)度平臺(tái)XXL-JOB學(xué)習(xí)筆記-helloworld運(yùn)行

    環(huán)境:win10 eclipse java17 mysql8.0.17 xxl-job 2.4 源碼:https://github.com/xuxueli/xxl-job/ 導(dǎo)入時(shí)按Existing Maven Projects導(dǎo)入,先導(dǎo)入xxl-job-admin(管理平臺(tái))和xxl-job-executor-sample-springboot(通過(guò)springboot管理的執(zhí)行器實(shí)例)。 如果導(dǎo)入時(shí)速度非常慢,或者報(bào)錯(cuò)如 Plugin ‘org.apache.maven.plugins:maven-

    2024年02月13日
    瀏覽(24)
  • 使用java實(shí)現(xiàn) 分布式任務(wù)調(diào)度平臺(tái)XXL-JOB 部署及使用

    使用java實(shí)現(xiàn) 分布式任務(wù)調(diào)度平臺(tái)XXL-JOB 部署及使用

    XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。 詳細(xì)的特性和優(yōu)點(diǎn)參考官網(wǎng)地址:https://www.xuxueli.com/xxl-job/ 一、任務(wù)調(diào)度 0.下載官方源碼 1.解壓后可以在 xxl-job-2.3.1docdb 找

    2024年02月11日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包