那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Boot集群/分布式下的定時任務(wù)說明

jf_78858299 ? 來源:SpringBoot ? 作者:林祥纖 ? 2023-04-12 11:31 ? 次閱讀

如有8個實例,執(zhí)行的時候會隨機分配一個實例運行還是8個都會運行?在這節(jié)博客中沒有辦法完全解決這個問題,在這里拋磚引玉說明下。 看下本章大綱:

(1)回顧定時任務(wù)的實現(xiàn)方式;

(2)集群環(huán)境下的任務(wù)調(diào)度說明;

(3)Spring的Scheduled Task實現(xiàn)集群思路;

(4)Quartz實現(xiàn)集群思路;

我們一起看下本節(jié)具體的內(nèi)容:

(1)回顧定時任務(wù)的實現(xiàn)方式;

定時任務(wù)的實現(xiàn)方式有多種,例如

JDK自帶的Timer+TimerTask方式,

spring3.0以后的調(diào)度任務(wù)(ScheduledTask),

Quartz等。

(2)集群環(huán)境下的任務(wù)調(diào)度說明;

Timer+TimerTask是最基本的解決方案;

Spring自帶的Scheduled Task是一個輕量級的定時任務(wù)調(diào)度器,支持固定時間(支持cron表達式)和固定時間間隔調(diào)度任務(wù),支持線程池管理

以上兩種方式有一個共同的缺點,那就是應(yīng)用服務(wù)器集群下會出現(xiàn)任務(wù)多次被調(diào)度執(zhí)行的情況,因為集群的節(jié)點之間是不會共享任務(wù)信息的,每個節(jié)點上的任務(wù)都會按時執(zhí)行。

Quartz是一個功能完善的任務(wù)調(diào)度框架,特別牛叉的是它支持集群環(huán)境下的任務(wù)調(diào)度,當(dāng)然代價也很大,需要將任務(wù)調(diào)度狀態(tài)序列化到數(shù)據(jù)庫。Quartz框架需要10多張表協(xié)同,配置繁多。

(3)Spring的Scheduled Task實現(xiàn)集群思路;

如果在實際項目中使用的scheduled task的話,那么也有自己變通的方式進行實現(xiàn)。

無非是一個任務(wù)互斥訪問的問題,聲明一把全局的“鎖”作為互斥量,哪個應(yīng)用服務(wù)器拿到這把“鎖”,就有執(zhí)行任務(wù)的權(quán)利,未拿到“鎖”的應(yīng)用服務(wù)器不進行任何任務(wù)相關(guān)的操作。另外就是這把“鎖”最好還能在下次任務(wù)執(zhí)行時間點前失效。

(4)Quartz實現(xiàn)集群思路;

選Quartz的團隊基本上是沖著Quartz本身實現(xiàn)的集群去的, 不然JDK自帶Timer就可以實現(xiàn)相同的功能, 而Timer存在的單點故障是生產(chǎn)環(huán)境上所不能容忍的。 在自己造個有負載均衡和支持集群(高可用、伸縮性)的調(diào)度框架又影響項目的進度, 所以大多數(shù)團隊都直接使用了Quartz來作為調(diào)度框架

一個Quartz集群中的每個節(jié)點是一個獨立的Quartz應(yīng)用,它又管理著其他的節(jié)點。這就意味著你必須對每個節(jié)點分別啟動或停止。Quartz集群中,獨立的Quartz節(jié)點并不與另一其的節(jié)點或是管理節(jié)點通信,而是通過相同的數(shù)據(jù)庫表來感知到另一Quartz應(yīng)用的

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14387
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    150

    瀏覽量

    35944
收藏 人收藏

    評論

    相關(guān)推薦

    spark集群使用hanlp進行分布式分詞操作說明

    本篇分享一個使用hanlp分詞的操作小案例,即在spark集群中使用hanlp完成分布式分詞的操作,文章整理自【qq_33872191】的博客,感謝分享!以下為全文: 分兩步:第一步:實現(xiàn)
    發(fā)表于 01-21 10:45

    如何在集群部署時實現(xiàn)分布式session?

    集群部署時的分布式 session 如何實現(xiàn)?
    發(fā)表于 07-17 06:57

    Hadoop集群分布式的搭建步驟

    Hadoop集群分布式搭建
    發(fā)表于 11-04 09:19

    【學(xué)習(xí)打卡】OpenHarmony的分布式任務(wù)調(diào)度

    之前我們分享過分布式軟總線和分布式數(shù)據(jù)管理,今天主要說一OpenHarmony的分布式任務(wù)調(diào)度,分布式
    發(fā)表于 07-18 17:06

    Spring Boot定時任務(wù)的重寫方法

    Spring Boot應(yīng)該是目前最火的java開源框架了,它簡化了我們創(chuàng)建一個web服務(wù)的過程,讓我們可以在很短時間、基本零配置就可以啟動一個web服務(wù)。
    的頭像 發(fā)表于 01-20 17:38 ?2481次閱讀

    SpringBoot如何實現(xiàn)動態(tài)增刪啟停定時任務(wù)

    spring boot項目中,可以通過 @EnableScheduling 注解和@Scheduled注解實現(xiàn)定時任務(wù),也可以通過SchedulingConfigurer接口來實現(xiàn)定時任務(wù)
    的頭像 發(fā)表于 09-24 09:49 ?3002次閱讀
    SpringBoot如何實現(xiàn)動態(tài)增刪啟停<b class='flag-5'>定時任務(wù)</b>

    Python定時任務(wù)的實現(xiàn)方式

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務(wù),一種方式是采用 Linux 系統(tǒng)自帶的 crond 結(jié)合命令行實現(xiàn)。另外一種方式是直接使用Python。接下來整理的是常見的Python定時任務(wù)
    的頭像 發(fā)表于 10-08 15:20 ?6325次閱讀

    說說Spring定時任務(wù)如何大規(guī)模企業(yè)級運用

    定時任務(wù)是業(yè)務(wù)應(yīng)用開發(fā)中非常普遍存在的場景(如:每分鐘掃描超時支付的訂單,每小時清理一次數(shù)據(jù)庫歷史數(shù)據(jù),每天統(tǒng)計前一天的數(shù)據(jù)并生成報表等等),解決方案很多,Spring 框架提供了一種通過注解來配置定時任務(wù)的解決方案,接入非常的
    的頭像 發(fā)表于 11-04 09:36 ?734次閱讀

    xxl-job任務(wù)調(diào)度中間件解決定時任務(wù)的調(diào)度問題

    xxl-job是一款非常優(yōu)秀的任務(wù)調(diào)度中間件,輕量級、使用簡單、支持分布式等優(yōu)點,讓它廣泛應(yīng)用在我們的項目中,解決了不少定時任務(wù)的調(diào)度問題。
    的頭像 發(fā)表于 01-31 09:53 ?2097次閱讀

    Spring Boot中整合兩種定時任務(wù)的方法

    框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具備這兩個 Spring 中的定時任務(wù)實現(xiàn)策
    的頭像 發(fā)表于 04-07 14:55 ?1602次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>中整合兩種<b class='flag-5'>定時任務(wù)</b>的方法

    Spring Boot中如何使用定時任務(wù)

    本文介紹在 Spring Boot 中如何使用定時任務(wù),使用非常簡單,就不做過多說明了。
    的頭像 發(fā)表于 04-12 10:56 ?1014次閱讀

    如何動態(tài)添加修改刪除定時任務(wù)

    如何動態(tài)添加修改刪除定時任務(wù)?那么我們一起看看具體怎么實現(xiàn),先看下本節(jié)大綱: (1)思路說明; (2)代碼解析; (3)修改定時任務(wù)執(zhí)行周期特別說明
    的頭像 發(fā)表于 04-12 11:06 ?1123次閱讀

    spring分布式框架有哪些

    Spring分布式框架。 Spring Cloud Spring Cloud是基于Spring Boo
    的頭像 發(fā)表于 11-16 10:58 ?825次閱讀

    springclould分布式教程

    Spring Cloud是一個基于Spring Boot分布式系統(tǒng)開發(fā)工具,它提供了一系列的分布式系統(tǒng)解決方案,可以幫助開發(fā)者快速構(gòu)建和部
    的頭像 發(fā)表于 11-16 10:59 ?551次閱讀

    springcloud如何實現(xiàn)分布式

    Spring Cloud是基于Spring Boot開發(fā)的一套分布式系統(tǒng)解決方案,它主要包括了多個子項目,如服務(wù)注冊與發(fā)現(xiàn)、配置中心、負載均衡、斷路器、路由等等。通過使用
    的頭像 發(fā)表于 11-16 11:01 ?721次閱讀
    娱乐城官方网站| 石台县| 百家乐官网娱乐城介绍| 百家乐官网真人娱乐场开户注册 | 百家乐和的打法| 盐津县| 如何看百家乐官网的玩法技巧和规则| 百家乐赢钱公式1| 大发888信用好不好| 百家乐官网傻瓜式投注法| 永利百家乐官网的玩法技巧和规则| 线上百家乐平台| 皇冠足球网开户| 百家乐官网凯时赌场娱乐网规则| 百家乐网上娱乐场开户注册| 昭通市| 寅午戌 24山图| 大发888娱乐城 健账号| 百家乐官网公式球打法| 赌博百家乐经验网| 堆龙德庆县| 免费百家乐奥秘| 德州扑克 视频| 唐人街百家乐官网的玩法技巧和规则 | 永利百家乐游戏| 尚品棋牌注册| 缅甸百家乐官网赌场娱乐网规则 | 利都百家乐官网国际娱乐网| 速博百家乐的玩法技巧和规则| 百家乐官网最好的玩法| 波音百家乐自动投注| 新疆| 百家乐规则博彩正网| 和记国际娱乐| 58百家乐官网的玩法技巧和规则| 大发888大发娱乐场| 新加坡百家乐官网赌法| 百家乐博彩破解论坛| 安桌百家乐官网游戏百家乐官网| 威尼斯人娱乐城优惠活动| 百家乐官网园36bol在线|