国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

app運(yùn)營(yíng)流程上海外貿(mào)seo公司

app運(yùn)營(yíng)流程,上海外貿(mào)seo公司,網(wǎng)絡(luò)營(yíng)銷渠道優(yōu)化,做曖小視頻xo網(wǎng)站1.定時(shí)任務(wù) spring傳統(tǒng)的定時(shí)任務(wù)Scheduled,但是這樣存在這一些問題 : 做集群任務(wù)的重復(fù)執(zhí)行問題 cron表達(dá)式定義在代碼之中,修改不方便 定時(shí)任務(wù)失敗了,無法重試也沒有統(tǒng)計(jì) 如果任務(wù)量過大,不能有效的分片執(zhí)行 …

1.定時(shí)任務(wù)

spring傳統(tǒng)的定時(shí)任務(wù)@Scheduled,但是這樣存在這一些問題 :

  • 做集群任務(wù)的重復(fù)執(zhí)行問題

  • cron表達(dá)式定義在代碼之中,修改不方便

  • 定時(shí)任務(wù)失敗了,無法重試也沒有統(tǒng)計(jì)

  • 如果任務(wù)量過大,不能有效的分片執(zhí)行

解決這些問題的方案為:

xxl-job 分布式任務(wù)調(diào)度框架

2.分布式任務(wù)調(diào)度

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

當(dāng)前軟件的架構(gòu)已經(jīng)開始向分布式架構(gòu)轉(zhuǎn)變,將單體結(jié)構(gòu)拆分為若干服務(wù),服務(wù)之間通過網(wǎng)絡(luò)交互來完成業(yè)務(wù)處理。在分布式架構(gòu)下,一個(gè)服務(wù)往往會(huì)部署多個(gè)實(shí)例來運(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í)行,來提高任務(wù)調(diào)度的處理效率。

2、高可用

若某一個(gè)實(shí)例宕機(jī),不影響其他實(shí)例來執(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è)。讓開發(fā)人員及運(yùn)維人員能夠時(shí)刻了解任務(wù)執(zhí)行情況,從而做出快速的應(yīng)急處理響應(yīng)。

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

當(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í)行一次。常見解決方案:

  • 分布式鎖,多個(gè)實(shí)例在任務(wù)執(zhí)行前首先需要獲取鎖,如果獲取失敗那么就證明有其他服務(wù)已經(jīng)在運(yùn)行,如果獲取成功那么證明沒有服務(wù)在運(yùn)行定時(shí)任務(wù),那么就可以執(zhí)行。
  • ZooKeeper選舉,利用ZooKeeper對(duì)Leader實(shí)例執(zhí)行定時(shí)任務(wù),執(zhí)行定時(shí)任務(wù)的時(shí)候判斷自己是否是Leader,如果不是則不執(zhí)行,如果是則執(zhí)行業(yè)務(wù)邏輯,這樣也能達(dá)到目的。

2.2 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)是開發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,開箱即用。

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

4)Saturn: 唯品會(huì)開源的一個(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)是開發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,開箱即用。

源碼地址:https://gitee.com/xuxueli0323/xxl-job

文檔地址:https://www.xuxueli.com/xxl-job/

特性

  • 簡(jiǎn)單靈活
    提供Web頁(yè)面對(duì)任務(wù)進(jìn)行管理,管理系統(tǒng)支持用戶管理、權(quán)限控制;
    支持容器部署;
    支持通過通用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í)來不及執(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.3 XXL-Job-環(huán)境搭建

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

  • Maven3+
  • Jdk1.8+
  • Mysql5.7+

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

源碼倉(cāng)庫(kù)地址Release Download
https://github.com/xuxueli/xxl-jobDownload
http://gitee.com/xuxueli0323/xxl-jobDownload

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

2.3.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_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.3.4 編譯源碼

解壓源碼,按照maven格式將源碼導(dǎo)入IDE, 使用maven進(jìn)行編譯即可,源碼結(jié)構(gòu)如下:

在這里插入圖片描述

2.3.5 配置部署“調(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

啟動(dòng)調(diào)度中心,默認(rèn)登錄賬號(hào) “admin/123456”, 登錄后運(yùn)行界面如下圖所示。
在這里插入圖片描述

2.4 配置部署調(diào)度中心-docker安裝

1.創(chuàng)建mysql容器,初始化xxl-job的SQL腳本

docker run -p 3306:3306 --name mysql57 \
-v /opt/mysql/conf:/etc/mysql \
-v /opt/mysql/logs:/var/log/mysql \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

2.拉取鏡像

docker pull xuxueli/xxl-job-admin:2.3.0

3.創(chuàng)建容器

docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.200.130:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 \
--spring.datasource.username=root \
--spring.datasource.password=root" \
-p 8888:8080 -v /tmp:/data/applogs \
--name xxl-job-admin --restart=always  -d xuxueli/xxl-job-admin:2.3.0

2.5 xxl-job入門案例編寫

2.5.1 登錄調(diào)度中心,點(diǎn)擊下圖所示“新建任務(wù)”按鈕,新建示例任務(wù)

在這里插入圖片描述

2.5.2 創(chuàng)建xxljob-demo項(xiàng)目,導(dǎo)入依賴

<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.3.0</version></dependency>
</dependencies>

2.5.3 application.yml配置

server:port: 8881xxl:job:admin:addresses: http://192.168.200.130:8888/xxl-job-adminexecutor:appname: xxl-job-executor-sampleport: 9999

2.5.4 新建配置類

package com.heima.xxljob.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;/*** xxl-job config** @author xuxueli 2017-04-28*/
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.executor.appname}")private String appname;@Value("${xxl.job.executor.port}")private int port;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setPort(port);return xxlJobSpringExecutor;}}

2.5.4 任務(wù)代碼,重要注解:@XxlJob(“JobHandler”)

package com.heima.xxljob.job;import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;@Component
public class HelloJob {@XxlJob("demoJobHandler")public void helloJob(){System.out.println("簡(jiǎn)單任務(wù)執(zhí)行了。。。。");}
}

2.5.5 測(cè)試-單節(jié)點(diǎn)

  • 啟動(dòng)微服務(wù)

  • 在xxl-job的調(diào)度中心中啟動(dòng)任務(wù)

2.6 任務(wù)詳解-執(zhí)行器

  • 執(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í)行器的屬性說明:

屬性名稱說明
AppName是每個(gè)執(zhí)行器集群的唯一標(biāo)示AppName, 執(zhí)行器會(huì)周期性以AppName為對(duì)象進(jìn)行自動(dòng)注冊(cè)??赏ㄟ^該配置自動(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í)行器的地址信息;

自動(dòng)注冊(cè)和手動(dòng)注冊(cè)的區(qū)別和配置

在這里插入圖片描述

2.7 任務(wù)詳解-基礎(chǔ)配置

在這里插入圖片描述

基礎(chǔ)配置

  • 執(zhí)行器:每個(gè)任務(wù)必須綁定一個(gè)執(zhí)行器, 方便給任務(wù)進(jìn)行分組

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

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

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

在這里插入圖片描述

調(diào)度配置

  • 調(diào)度類型:
    • 無:該類型不會(huì)主動(dòng)觸發(fā)調(diào)度;
    • CRON:該類型將會(huì)通過CRON,觸發(fā)任務(wù)調(diào)度;
    • 固定速度:該類型將會(huì)以固定速度,觸發(fā)任務(wù)調(diào)度;按照固定的間隔時(shí)間,周期性觸發(fā);

在這里插入圖片描述

任務(wù)配置

  • 運(yùn)行模式:

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

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

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

在這里插入圖片描述

阻塞處理策略

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

  • 單機(jī)串行(默認(rèn)):調(diào)度請(qǐng)求進(jìn)入單機(jī)執(zhí)行器后,調(diào)度請(qǐng)求進(jìn)入FIFO(First Input First Output)隊(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ù);

在這里插入圖片描述

路由策略

當(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ù)開發(fā)分片任務(wù);

在這里插入圖片描述

2.8 路由策略(輪詢)-案例

1.修改任務(wù)為輪詢
在這里插入圖片描述

2.啟動(dòng)多個(gè)微服務(wù)

在這里插入圖片描述

修改yml配置文件

server:port: ${port:8881}xxl:job:admin:addresses: http://192.168.200.130:8888/xxl-job-adminexecutor:appname: xxl-job-executor-sampleport: ${executor.port:9999}

3.啟動(dòng)多個(gè)微服務(wù)

每個(gè)微服務(wù)輪詢的去執(zhí)行任務(wù)

2.9 路由策略(分片廣播)

2.9.1 分片邏輯

執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇”分片廣播”情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)對(duì)應(yīng)集群中所有執(zhí)行器執(zhí)行一次任務(wù)

在這里插入圖片描述

執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇”分片廣播”情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)對(duì)應(yīng)集群中所有執(zhí)行器執(zhí)行一次任務(wù)

在這里插入圖片描述

2.9.2 路由策略(分片廣播)-案例

需求:讓兩個(gè)節(jié)點(diǎn)同時(shí)執(zhí)行10000個(gè)任務(wù),每個(gè)節(jié)點(diǎn)分別執(zhí)行5000個(gè)任務(wù)

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

在這里插入圖片描述

②:創(chuàng)建任務(wù),路由策略為分片廣播

在這里插入圖片描述

③:分片廣播代碼

分片參數(shù)

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

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

修改yml配置

server:port: ${port:8881}xxl:job:admin:addresses: http://192.168.200.130:8888/xxl-job-adminexecutor:appname: xxl-job-sharding-executorport: ${executor.port:9999}

代碼

package com.heima.xxljob.job;import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;@Component
public class HelloJob {@Value("${server.port}")private String port;@XxlJob("demoJobHandler")public void helloJob(){System.out.println("簡(jiǎn)單任務(wù)執(zhí)行了。。。。"+port);}@XxlJob("shardingJobHandler")public void shardingJobHandler(){//分片的參數(shù)int shardIndex = XxlJobHelper.getShardIndex();int shardTotal = XxlJobHelper.getShardTotal();//業(yè)務(wù)邏輯List<Integer> list = getList();for (Integer integer : list) {if(integer % shardTotal == shardIndex){System.out.println("當(dāng)前第"+shardIndex+"分片執(zhí)行了,任務(wù)項(xiàng)為:"+integer);}}}public List<Integer> getList(){List<Integer> list = new ArrayList<>();for (int i = 0; i < 10000; i++) {list.add(i);}return list;}
}

④:測(cè)試

啟動(dòng)多個(gè)微服務(wù)測(cè)試,一次執(zhí)行可以執(zhí)行多個(gè)任務(wù)

http://aloenet.com.cn/news/40838.html

相關(guān)文章:

  • 樂清網(wǎng)站建設(shè)網(wǎng)站建設(shè)網(wǎng)站的宣傳與推廣
  • 旅游景區(qū)網(wǎng)站源碼個(gè)人網(wǎng)站設(shè)計(jì)成品
  • 建c2c網(wǎng)站費(fèi)用拉新推廣賺錢的app
  • 浙江網(wǎng)站建設(shè)企業(yè)軟文類型
  • 免費(fèi)做的網(wǎng)站怎么設(shè)置域名京津冀協(xié)同發(fā)展
  • 營(yíng)銷加盟網(wǎng)站建設(shè)網(wǎng)站維護(hù)是什么意思
  • erp定制開發(fā)價(jià)格澳門seo關(guān)鍵詞排名
  • 做網(wǎng)站阿里云買哪個(gè)服務(wù)器好點(diǎn)汽車推廣軟文
  • 長(zhǎng)沙制作網(wǎng)頁(yè)網(wǎng)站杭州網(wǎng)絡(luò)
  • 一品威客網(wǎng)怎么樣seo免費(fèi)優(yōu)化網(wǎng)站
  • win7iis配置網(wǎng)站百度搜索引擎網(wǎng)址
  • 整站優(yōu)化網(wǎng)站報(bào)價(jià)公司網(wǎng)站建設(shè)全包
  • 網(wǎng)站開發(fā)團(tuán)隊(duì)取什么名字好怎么引流怎么推廣自己的產(chǎn)品
  • 長(zhǎng)春怎么做網(wǎng)站建站流程新手搭建網(wǎng)站第一步
  • 商城網(wǎng)站開發(fā)教程視頻北京網(wǎng)絡(luò)營(yíng)銷推廣
  • 歐美設(shè)計(jì)網(wǎng)站推薦app拉新平臺(tái)哪個(gè)好傭金高
  • 密云做網(wǎng)站的產(chǎn)品關(guān)鍵詞大全
  • 建站行業(yè)的利潤(rùn)百度指數(shù)里的資訊指數(shù)是什么
  • 不銹鋼公司網(wǎng)站源碼 網(wǎng)站建設(shè) 產(chǎn)品3級(jí)分類asp源碼域名查詢注冊(cè)商
  • 360度全景街景地圖陽(yáng)江seo
  • 北京營(yíng)銷型網(wǎng)站建設(shè)培訓(xùn)百度怎么優(yōu)化網(wǎng)站關(guān)鍵詞
  • 科學(xué)城做網(wǎng)站公司網(wǎng)絡(luò)營(yíng)銷的四種模式
  • 桂平網(wǎng)站制作seo查詢seo優(yōu)化
  • 網(wǎng)站不備案可以做微信小程序么幫人推廣的平臺(tái)
  • 獨(dú)立商城網(wǎng)站建設(shè)網(wǎng)絡(luò)營(yíng)銷八大目標(biāo)是什么
  • 手機(jī)屏幕網(wǎng)站佛山外貿(mào)seo
  • 新校區(qū)建設(shè)專題網(wǎng)站免費(fèi)瀏覽網(wǎng)站推廣
  • 做網(wǎng)站最重要的是什么seo方法圖片
  • 網(wǎng)站建設(shè)制作設(shè)計(jì)seo優(yōu)化珠海百度人工電話
  • 網(wǎng)站建設(shè) 上海網(wǎng)站百度seo排名規(guī)則