一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內不再提示

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

jf_78858299 ? 來源:SpringBoot ? 作者:林祥纖 ? 2023-04-12 11:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

(2)集群環(huán)境下的任務調度說明;

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

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

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

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

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

JDK自帶的Timer+TimerTask方式,

spring3.0以后的調度任務(ScheduledTask),

Quartz等。

(2)集群環(huán)境下的任務調度說明;

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

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

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

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

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

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

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

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

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

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

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

    關注

    0

    文章

    340

    瀏覽量

    14965
  • Boot
    +關注

    關注

    0

    文章

    153

    瀏覽量

    36644
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    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

    【學習打卡】OpenHarmony的分布式任務調度

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

    Spring Boot定時任務的重寫方法

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

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

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

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

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

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

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

    xxl-job任務調度中間件解決定時任務的調度問題

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

    Spring Boot中整合兩種定時任務的方法

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

    Spring Boot中如何使用定時任務

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

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

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

    spring分布式框架有哪些

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

    springclould分布式教程

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

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

    Spring Cloud是基于Spring Boot開發(fā)的一套分布式系統(tǒng)解決方案,它主要包括了多個子項目,如服務注冊與發(fā)現(xiàn)、配置中心、負載均衡、斷路器、路由等等。通過使用
    的頭像 發(fā)表于 11-16 11:01 ?895次閱讀