日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot2 集成 xxl-job任务调度中心_路由策略

發布時間:2024/9/27 javascript 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot2 集成 xxl-job任务调度中心_路由策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

          • 一、簡述
          • 二、故障轉移演示
            • 2.1. 啟動2個執行器
            • 2.2. 添加執行器ip
            • 2.3. 故障轉移策略
            • 2.4. 啟動任務
            • 2.5. 模擬8081執行器宕機
            • 2.6. 結論
          • 三、輪訓策略演示
            • 3.1. 啟動2個執行器
            • 3.2. 添加執行器ip
            • 3.3. 輪訓策略
            • 3.4. 啟動任務
            • 3.5. 日志分析
            • 3.6. 故障轉移
            • 3.7. 重新啟動8082執行器
          • 四、輪訓策略演示
            • 4.1. 啟動3個執行器
            • 4.2. 添加執行器ip
            • 4.3. 分片廣播策略
            • 4.4. 啟動任務
            • 4.5. 案例代碼
            • 4.6. 執行一次測試
            • 4.7. 執行器效果
            • 4.8. 結論

一、簡述

路由策略:執行器集群部署時提供豐富的路由策略,包括:第一個、最后一個、輪詢、隨機、一致性HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;

路由策略說明使用頻次
FIRST(第一個)固定選擇第一個機器
LAST(最后一個)固定選擇最后一個機器
ROUND(輪詢)負載均衡+故障轉移經常使用
RANDOM(隨機)隨機選擇在線的機器
FAILOVER(故障轉移)按照順序依次進行心跳檢測,第一個心跳檢測成功的機器選定為目標執行器并發起調度經常使用
SHARDING_BROADCAST(分片廣播)廣播觸發對應集群中所有機器執行一次任務,
同時系統自動傳遞分片參數;可根據分片參數開發分片任務
經常使用
二、故障轉移演示
2.1. 啟動2個執行器


2.2. 添加執行器ip



2.3. 故障轉移策略

2.4. 啟動任務





發現任務只在8081執行器上,每5秒執行一次。8082執行器上沒有執行。

2.5. 模擬8081執行器宕機

停止8081執行器,最后一次執行的時間是2021-02-15 14:59:01
8082執行器,第一次執行的時間是2021-02-15 14:59:06

正好接上了,對吧!

2.6. 結論

故障轉移策略只會運行在一臺8081執行器上,當8081執行器宕機,就會轉移到8082執行器上繼續執行任務。

三、輪訓策略演示
3.1. 啟動2個執行器

因為修改策略和執行器無關,如果上面啟動了,此步驟可以跳過

3.2. 添加執行器ip

因為修改策略和執行器無關,如果上面啟動了,此步驟可以跳過


3.3. 輪訓策略

3.4. 啟動任務


3.5. 日志分析



8081執行器,執行的時間是

2021-02-15 15:09:13
2021-02-15 15:09:23
2021-02-15 15:09:33
2021-02-15 15:09:43
2021-02-15 15:09:53

8082執行器,執行的時間是
2021-02-15 15:09:18
2021-02-15 15:09:28
2021-02-15 15:09:38
2021-02-15 15:09:48
2021-02-15 15:09:58

從以上數據分析得出,任務是負載均衡執行的。

3.6. 故障轉移

8082執行器停止,模擬宕機,最后一次執行的時間是2021-02-15 15:14:19


當8082宕機后,最后執行的時間是
2021-02-15 15:13:59
2021-02-15 15:14:09
2021-02-15 15:14:19

當8082宕機后,8081執行器,繼續執行的時間是
2021-02-15 15:14:24
2021-02-15 15:14:34
2021-02-15 15:14:44
2021-02-15 15:14:54
2021-02-15 15:15:04

8081執行器繼續執行任務,但是是每隔10秒

3.7. 重新啟動8082執行器



8082執行器任務開始的時間
2021-02-15 15:18:50
2021-02-15 15:18:59
2021-02-15 15:19:09
2021-02-15 15:19:19
2021-02-15 15:19:29

8081執行器任務執行的時間
2021-02-15 15:18:54
2021-02-15 15:19:04
2021-02-15 15:19:14
2021-02-15 15:19:24
2021-02-15 15:19:34
2021-02-15 15:19:45

任務繼續輪序負載每個5秒執行

四、輪訓策略演示
4.1. 啟動3個執行器



4.2. 添加執行器ip

因為修改策略和執行器無關,如果上面啟動了,此步驟可以跳過


4.3. 分片廣播策略

4.4. 啟動任務


4.5. 案例代碼
package com.gblfy.distributedjob.task;import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;import java.util.Arrays; import java.util.List;@Component public class TaskExecute {private final static Logger logger = LoggerFactory.getLogger(TaskExecute.class);/*** 任務調度入口* 分片廣播任務* <p>* 參數1: 執行日期 executeDate 2021-02-15* 參數2: 執行標識 executeFlag I-增量 F-全量* 參數3: 表名稱 tableName sys_user* 參數4: 管理機構 manageCom 86* 參數5: 執行場景 executeScene UPDATE* </p>*/@XxlJob("myJobHandler")public void shardingJobHandler() throws Exception {// 分片參數int shardIndex = XxlJobHelper.getShardIndex();int shardTotal = XxlJobHelper.getShardTotal();XxlJobHelper.log("分片參數:當前分片序號 = {}, 總分片數 = {}", shardIndex, shardTotal);logger.info("分片參數:當前分片序號 = {}, 總分片數 = {}", shardIndex, shardTotal);List<Integer> list = Arrays.asList(1, 2, 3, 4);// 業務邏輯for (Integer i : list) {if (i % shardTotal == shardIndex) {logger.info("myXxlJobHandler execute...user={}", i);XxlJobHelper.log("第 {} 片, 命中分片開始處理", i);}}} }
4.6. 執行一次測試

4.7. 執行器效果



4.8. 結論

分片廣播為了把數據進行分片處理,簡言之,大量訂單數據根據不同的訂單號取模,分片機器分別處理屬于自己片區的訂單數據,減輕服務器壓力。

總結

以上是生活随笔為你收集整理的SpringBoot2 集成 xxl-job任务调度中心_路由策略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。