精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

幾種主流的分布式定時任務,你知道哪些?

開發(fā) 后端
單點的定時服務在目前微服務的大環(huán)境下,應用場景越來越局限,所以嘗鮮一下分布式定時任務吧。

單點定時任務

JDK原生

自從JDK1.5之后,提供了ScheduledExecutorService代替TimerTask來執(zhí)行定時任務,提供了不錯的可靠性。

public class SomeScheduledExecutorService {
public static void main(String[] args) {
// 創(chuàng)建任務隊列,共 10 個線程
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(10);
// 執(zhí)行任務: 1秒 后開始執(zhí)行,每 30秒 執(zhí)行一次
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("執(zhí)行任務:" + new Date());
}, 10, 30, TimeUnit.SECONDS);
}
}

Spring Task

Spring Framework自帶定時任務,提供了cron表達式來實現豐富定時任務配置。新手推薦使用https://cron.qqe2.com/這個網站來匹配你的cron表達式。

@Configuration
@EnableScheduling
public class SomeJob {
private static final Logger LOGGER = LoggerFactory.getLogger(SomeJob.class);
/**
* 每分鐘執(zhí)行一次(例:18:01:00,18:02:00)
* 秒 分鐘 小時 日 月 星期 年
*/
@Scheduled(cron = "0 0/1 * * * ? *")
public void someTask() {
//...
}
}

單點的定時服務在目前微服務的大環(huán)境下,應用場景越來越局限,所以嘗鮮一下分布式定時任務吧。

基于 Redis 實現

相較于之前兩種方式,這種基于Redis的實現可以通過多點來增加定時任務,多點消費。但是要做好防范重復消費的準備。

通過ZSet的方式

將定時任務存放到ZSet集合中,并且將過期時間存儲到ZSet的Score字段中,然后通過一個循環(huán)來判斷當前時間內是否有需要執(zhí)行的定時任務,如果有則進行執(zhí)行。

具體實現代碼如下:

/**
* Description: 基于Redis的ZSet的定時任務 .<br>
*
* @author mxy
*/
@Configuration
@EnableScheduling
public class RedisJob {
public static final String JOB_KEY = "redis.job.task";
private static final Logger LOGGER = LoggerFactory.getLogger(RedisJob.class);
@Autowired private StringRedisTemplate stringRedisTemplate;
/**
* 添加任務.
*
* @param task
*/
public void addTask(String task, Instant instant) {
stringRedisTemplate.opsForZSet().add(JOB_KEY, task, instant.getEpochSecond());
}
/**
* 定時任務隊列消費
* 每分鐘消費一次(可以縮短間隔到1s)
*/
@Scheduled(cron = "0 0/1 * * * ? *")
public void doDelayQueue() {
long nowSecond = Instant.now().getEpochSecond();
// 查詢當前時間的所有任務
Set<String> strings = stringRedisTemplate.opsForZSet().range(JOB_KEY, 0, nowSecond);
for (String task : strings) {
// 開始消費 task
LOGGER.info("執(zhí)行任務:{}", task);
}
// 刪除已經執(zhí)行的任務
stringRedisTemplate.opsForZSet().remove(JOB_KEY, 0, nowSecond);
}
}

適用場景如下:

  • 訂單下單之后15分鐘后,用戶如果沒有付錢,系統需要自動取消訂單。
  • 紅包24小時未被查收,需要延遲執(zhí)退還業(yè)務;
  • 某個活動指定在某個時間內生效&失效;

優(yōu)勢是:

  • 省去了MySQL的查詢操作,而使用性能更高的Redis做為代替;
  • 不會因為停機等原因,遺漏要執(zhí)行的任務;

鍵空間通知的方式

我們可以通過Redis的鍵空間通知來實現定時任務,它的實現思路是給所有的定時任務設置一個過期時間,等到了過期之后,我們通過訂閱過期消息就能感知到定時任務需要被執(zhí)行了,此時我們執(zhí)行定時任務即可。

默認情況下Redis是不開啟鍵空間通知的,需要我們通過config set notify-keyspace-events Ex的命令手動開啟。開啟之后定時任務的代碼如下:

自定義監(jiān)聽器

設置該監(jiān)聽器

/**
* 自定義監(jiān)聽器.
*/
public class KeyExpiredListener extends KeyExpirationEventMessageListener {
public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] pattern) {
// channel
String channel = new String(message.getChannel(), StandardCharsets.UTF_8);
// 過期的key
String key = new String(message.getBody(), StandardCharsets.UTF_8);
// todo 你的處理
}
}

設置該監(jiān)聽器

/**
* Description: 通過訂閱Redis的過期通知來實現定時任務 .<br>
*
* @author mxy
*/
@Configuration
public class RedisExJob {
@Autowired private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
return redisMessageListenerContainer;
}
@Bean
public KeyExpiredListener keyExpiredListener() {
return new KeyExpiredListener(this.redisMessageListenerContainer());
}
}

Spring會監(jiān)聽符合以下格式的Redis消息

private static final Topic TOPIC_ALL_KEYEVENTS = new PatternTopic("__keyevent@*");

基于Redis的定時任務能夠適用的場景也比較有限,但實現上相對簡單,但對于功能冪等有很大要求。從使用場景上來說,更應該叫做延時任務。

場景舉例:

  • 訂單下單之后15分鐘后,用戶如果沒有付錢,系統需要自動取消訂單。
  • 紅包24小時未被查收,需要延遲執(zhí)退還業(yè)務;

優(yōu)劣勢是:

  • 被動觸發(fā),對于服務的資源消耗更小;
  • Redis的Pub/Sub不可靠,沒有ACK機制等,但是一般情況可以容忍;
  • 鍵空間通知功能會耗費一些CPU

分布式定時任務

引入分布式定時任務組件or中間件

將定時任務作為單獨的服務,遏制了重復消費,獨立的服務也有利于擴展和維護。

quartz

依賴于MySQL,使用相對簡單,可多節(jié)點部署,通過競爭數據庫鎖來保證只有一個節(jié)點執(zhí)行任務。沒有圖形化管理頁面,使用相對麻煩。

elastic-job-lite

依賴于Zookeeper,通過zookeeper的注冊與發(fā)現,可以動態(tài)的添加服務器。

  • 多種作業(yè)模式
  • 失效轉移
  • 運行狀態(tài)收集
  • 多線程處理數據
  • 冪等性
  • 容錯處理
  • 支持spring命名空間
  • 有圖形化管理頁面

LTS

依賴于Zookeeper,集群部署,可以動態(tài)的添加服務器。可以手動增加定時任務,啟動和暫停任務。

  • 業(yè)務日志記錄器
  • SPI擴展支持
  • 故障轉移
  • 節(jié)點監(jiān)控
  • 多樣化任務執(zhí)行結果支持
  • FailStore容錯
  • 動態(tài)擴容
  • 對spring相對友好
  • 有監(jiān)控和管理圖形化界面

xxl-job

國產,依賴于MySQL,基于競爭數據庫鎖保證只有一個節(jié)點執(zhí)行任務,支持水平擴容。可以手動增加定時任務,啟動和暫停任務。

  • 彈性擴容
  • 分片廣播
  • 故障轉移
  • Rolling實時日志
  • GLUE(支持在線編輯代碼,免發(fā)布)
  • 任務進度監(jiān)控
  • 任務依賴
  • 數據加密
  • 郵件報警
  • 運行報表
  • 優(yōu)雅停機
  •  國際化(中文友好)

總結

微服務下,推薦使用xxl-job這一類組件服務將定時任務合理有效的管理起來。而單點的定時任務有其局限性,適用于規(guī)模較小、對未來擴展要求不高的服務。

相對而言,基于spring task的定時任務最簡單快捷,而xxl-job的難度主要體現在集成和調試上。無論是什么樣的定時任務,你都需要確保:

  • 任務不會因為集群部署而被多次執(zhí)行。
  • 任務發(fā)生異常得到有效的處理
  • 任務的處理過慢導致大量積壓
  • 任務應該在預期的時間點執(zhí)行

中間件可以將服務解耦,但增加了復雜度

責任編輯:龐桂玉 來源: Java知音
相關推薦

2022-03-28 07:51:25

分布式定時任務

2024-02-19 00:00:00

分布式定時任務框架

2022-08-09 08:40:37

框架分布式定時任務

2021-08-05 07:28:25

Java實現方式

2023-01-04 09:23:58

2022-03-17 09:55:05

架構分布式選型

2022-03-23 11:45:39

Quartz數據庫節(jié)點

2022-02-10 08:57:45

分布式線程鎖

2019-11-12 09:32:39

分布式elastic-job分片

2025-11-04 01:21:00

Spring分布式數據

2025-07-28 01:12:00

2018-02-06 09:06:03

主流分布式存儲系統

2025-08-01 08:47:45

2024-02-22 17:02:09

IDUUID雪花算法

2022-05-18 10:38:51

Redis分布式鎖數據

2025-05-13 02:10:00

2025-11-11 07:51:00

2021-05-08 08:01:05

Session登錄瀏覽器

2017-11-07 15:20:06

分布式存儲解決

2022-06-16 07:31:15

MySQL服務器服務
點贊
收藏

51CTO技術棧公眾號

国产乱人乱偷精品视频| 日本精品在线观看视频| av福利在线导航| 91原创在线视频| 国产精品中文字幕久久久| 四虎884aa成人精品| 丁香综合av| 欧美伊人久久久久久久久影院| 亚洲综合精品一区二区| 日韩xxxxxxxxx| 欧美日韩中文一区二区| 欧美一区二区在线视频| 国产精品久久中文字幕| √新版天堂资源在线资源| 丰满亚洲少妇av| 国产精品啪视频| 国产第100页| 久久高清精品| 亚洲人av在线影院| 久久久久99人妻一区二区三区 | 日韩国产精品视频| 天天色综合社区| 婷婷电影在线观看| 一区二区三区蜜桃| 日本一区二区免费看| 黄色一级大片在线免费看国产一 | 国产一区福利| 欧美日韩不卡一区| 日韩精品一区中文字幕| 91九色美女在线视频| 国产精品理伦片| 欧美另类一区| 黄色小视频免费在线观看| 韩国欧美国产1区| 国产九九精品视频| 天堂在线免费观看视频| 狠狠综合久久| 欧美激情aaaa| 青青草原国产视频| 五月激情综合| 最近2019中文字幕mv免费看 | 无码人妻一区二区三区线 | 永久免费精品视频网站| 麻豆导航在线观看| 久久蜜桃av一区精品变态类天堂| 日产日韩在线亚洲欧美| 国产视频91在线| 欧美午夜一区二区福利视频| 美女啪啪无遮挡免费久久网站| 亚洲欧美综合视频| 99精品中文字幕在线不卡 | 中文字幕精品无码亚| 亚洲黄色成人| 午夜精品在线视频| 日本在线视频中文字幕| 亚洲日韩视频| 2018国产精品视频| 中文字幕国产在线观看| 久久精品亚洲| 国产精品免费一区| 一级黄在线观看| 国产精品亚洲综合一区在线观看| 2019日本中文字幕| 亚洲精品77777| 久久国产日韩| 国产日韩在线观看av| 亚洲天堂视频网| 国产成人在线观看免费网站| 成人动漫视频在线观看免费| 天天操天天干天天干| 99久久99久久综合| 日韩影院一区| 蜜桃视频在线观看www社区| 亚洲日本一区二区三区| 国内自拍中文字幕| 精品极品在线| 在线视频一区二区三区| 最新av免费在线观看| 无码国模国产在线观看| 亚洲国产成人爱av在线播放| www.av欧美| 91亚洲国产高清| 欧美精品成人91久久久久久久| 黄色国产在线播放| 真实国产乱子伦精品一区二区三区| 亚洲精品视频久久| 中国1级黄色片| 激情文学一区| 国产成人精品免费久久久久| 亚洲综合网av| 成人av资源网站| 日本成人黄色| 先锋影音在线资源站91| 色狠狠色狠狠综合| 欧美视频亚洲图片| 香蕉久久99| 久久成人人人人精品欧| 黑人精品无码一区二区三区AV| 久久久久久久久久久妇女| 欧美另类高清videos| 黄色在线视频网址| 国产激情精品久久久第一区二区| 亚洲自拍av在线| 性插视频在线观看| 中文字幕视频一区二区三区久| 神马影院我不卡| 丁香花视频在线观看| 欧美色欧美亚洲另类二区| 玖玖爱在线精品视频| 日韩欧美中字| 欧美最近摘花xxxx摘花| 超碰福利在线观看| 欧美高清在线视频| 成人免费在线小视频| 人人九九精品视频| 日韩视频中文字幕| 国产精品va无码一区二区三区| 一本一本久久| 91九色在线观看| 在线免费观看的av网站| 欧美视频国产精品| wwwxx日本| 亚洲成人精选| 国产精品亚洲自拍| 国产专区在线| 欧美三级欧美成人高清www| 欧美人与性动交α欧美精品| 久久国产精品成人免费观看的软件| 正在播放欧美视频| 精品欧美一区二区三区免费观看| 美女精品一区| 国内精品二区| а√天堂中文资源在线bt| 777精品伊人久久久久大香线蕉| 一级全黄裸体片| 视频在线不卡免费观看| 国产精品久久久久久久久久ktv| 国产免费av观看| 中文字幕av一区二区三区高| 久久精品一区二| 亚洲精品一级二级三级| 久久久久久久国产| 高清毛片aaaaaaaaa片| ...av二区三区久久精品| 最新中文字幕免费视频| 欧美日韩在线网站| 国产啪精品视频| 日本在线免费| 欧美精品精品一区| 久久99久久99精品免费看小说| 尤物在线精品| 国产伦精品一区二区三区在线 | 日韩在线视频免费观看| www.五月婷婷.com| 中文字幕精品在线不卡| 在线观看的毛片| 日韩大片在线| 91沈先生作品| 女子免费在线观看视频www| 日韩一区二区在线观看视频播放| 男女做爰猛烈刺激| 日韩国产欧美三级| 亚洲一区二区高清视频| 国产精品2区| 久久久久国产精品一区| 秋霞av鲁丝片一区二区| 欧美午夜无遮挡| 亚洲成人黄色av| 狠狠色丁香婷综合久久| 一级特黄妇女高潮| 红杏视频成人| 国产大片精品免费永久看nba| а√天堂资源在线| 精品动漫一区二区| 在线视频第一页| 国产综合色在线| 国产精品久久中文字幕| 精品免费在线| 亚洲影院色无极综合| 欧美巨大丰满猛性社交| 中文字幕日韩欧美在线| 888奇米影视| 婷婷久久综合九色综合绿巨人| 搡的我好爽在线观看免费视频| jlzzjlzz亚洲女人| 91热精品视频| 日韩激情电影| 操91在线视频| 手机亚洲第一页| 欧美日本在线观看| 99热在线观看免费精品| 国产精品福利一区二区三区| 特级特黄刘亦菲aaa级| 视频一区二区三区在线| 亚洲天堂第一区| 亚洲涩涩av| 成人区精品一区二区| 国产精品亚洲d| 久久久久久伊人| av在线电影网| 亚洲国产精品久久久久秋霞蜜臀| 久久久久97国产| 久久久www免费人成精品| 久久艹这里只有精品| 久久精品国语| 妺妺窝人体色777777| 天天做天天爱综合| 欧美日韩在线高清| youjizz亚洲| 91亚洲精品在线| 成人在线爆射| 57pao成人国产永久免费| 91麻豆一二三四在线| 在线电影av不卡网址| 日韩在线观看视频一区二区三区| 午夜精品免费在线| 欧美高清性xxxx| 国产伦精品一区二区三区在线观看| 中文字幕一区二区三区四区五区| 色婷婷成人网| 欧洲精品毛片网站| 欧美黑人xx片| 久久成人人人人精品欧| 免费的黄网站在线观看| 亚洲天天在线日亚洲洲精| 少妇又色又爽又黄的视频| 日韩一级二级三级精品视频| 中文字幕第一页在线播放| 色综合天天性综合| 国产手机在线视频| 亚洲高清视频中文字幕| 黄色在线观看免费| 夜夜嗨av一区二区三区中文字幕| 中文字幕在线视频播放| 国产福利一区在线| 久久久久亚洲av无码麻豆| 黄网站免费久久| 性生活免费在线观看| 青青青爽久久午夜综合久久午夜| 99热都是精品| 亚洲国产日韩欧美在线| 午夜啪啪福利视频| 综合在线一区| 91大学生片黄在线观看| 羞羞色午夜精品一区二区三区| 国产日韩欧美精品| 97se亚洲| 国产在线精品日韩| 日韩极品在线| 欧美成ee人免费视频| 精品久久久久中文字幕小说| 日韩免费电影一区二区三区| 日韩一区三区| 中文字幕一区二区三区四区五区六区| 国产精品白浆| 国产手机精品在线| 亚洲妇女av| 亚洲精品永久www嫩草| 欧美精品一区二区三区中文字幕| 高清国产一区| 欧美wwwsss9999| 日本亚洲自拍| 国产精品videosex性欧美| 在线视频一二三区| 亚洲欧洲午夜| 看欧美ab黄色大片视频免费 | 大奶在线精品| 久久资源亚洲| 欧美xxxxx视频| 亚洲欧美日韩不卡| 在线免费观看欧美| 手机看片福利日韩| 国产高清久久久久| 中文字幕xxx| 国产精品灌醉下药二区| 国产无遮挡免费视频| 色欧美日韩亚洲| 国产精品欧美激情在线| 日韩欧美一卡二卡| 青青草手机在线| www.久久久久| 国产传媒在线观看| 国产精品自在线| 精品亚洲免a| 亚洲一一在线| 亚洲日产国产精品| 天天看片天天操| 91免费版在线| 国产真实乱在线更新| 粉嫩老牛aⅴ一区二区三区| 日韩欧美在线观看免费| 欧美一区2区视频在线观看| 天堂а在线中文在线无限看推荐| 精品国产一区二区三区四区四 | 深夜在线视频| 91在线色戒在线| 九一成人免费视频| 久久免费一级片| 日韩影院免费视频| 日本性生活一级片| 亚洲欧洲www| 99精品人妻国产毛片| 精品久久久久香蕉网| 一区二区三区视频在线观看视频| 亚洲欧美成人一区二区在线电影| 欧美 日韩 国产 成人 在线| 在线国产精品视频| 美女高潮在线观看| 99精彩视频| 91蜜臀精品国产自偷在线| 久久国产亚洲精品无码| 国产精品99久久久久久有的能看 | 91丨九色porny丨蝌蚪| 免费看特级毛片| 在线精品视频小说1| 无码精品一区二区三区在线| 欧美国产激情18| 日韩一级特黄| 先锋在线资源一区二区三区| 一区在线免费观看| 午夜免费视频网站| 亚洲欧洲日产国码二区| 亚洲图片欧美日韩| 亚洲码在线观看| 美女搞黄视频在线观看| 国产精品乱码| 1024日韩| 性农村xxxxx小树林| 一区二区三区在线看| 国产麻豆精品一区| 色婷婷综合成人av| 九七电影院97理论片久久tvb| 91免费看网站| 偷拍欧美精品| 手机精品视频在线| 亚洲精品视频观看| 国产高清免费观看| 色综合视频一区中文字幕| 精品成人18| 99久re热视频精品98| 国产专区欧美精品| 久久久精品少妇| 91精品国产综合久久香蕉的特点| 成人免费观看在线视频| 久久99精品视频一区97| 日韩欧美中文在线观看| 日韩中文字幕在线不卡| 国产91精品露脸国语对白| www.av视频在线观看| 欧美精品一区二区三| 女厕盗摄一区二区三区| 欧美日韩在线高清| 日韩av一区二| 五月天色婷婷丁香| 精品国产91洋老外米糕| 99re6在线精品视频免费播放| 国产精品久久久久久久久久小说| 国产情侣一区在线| 国产香蕉一区二区三区| 国产精品一区不卡| 国产精品99精品| 亚洲男人天堂2023| 成人综合网站| 成人免费看片视频在线观看| 国产精品996| 久久久精品免费看| 伊人av综合网| 欧美精品三级在线| 精品无码国模私拍视频| 国产日本欧美一区二区| 一区二区三区黄色片| 色综合男人天堂| 久久99精品久久久久久园产越南| 99色这里只有精品| 国产欧美视频在线观看| 一级淫片免费看| 久久久亚洲国产天美传媒修理工| 国产精久久一区二区| 玩弄中年熟妇正在播放| 亚洲国产精品成人综合 | 羞羞网站在线免费观看| 国产综合动作在线观看| 免费成人在线观看| 精品午夜福利视频| 亚洲欧美日本另类| 国产精品久久久久久久久久久久久久久| 欧美一级二级三级九九九| 激情av综合网| 男人天堂2024| 久久香蕉国产线看观看网| 欧美wwwwww| 亚洲精品中文字幕乱码无线| 婷婷综合五月天| gogogogo高清视频在线| 欧美人xxxxx| 国产精品99久久久久久宅男| 日日夜夜狠狠操| 久久乐国产精品| 国产精品久久久久9999赢消| 国产三级视频网站|